私はRubyの構文知識がほとんどなく、以下の関数を擬似コードに変換して、それがどのように呼び出されるかの例を提供するのに十分親切であることを望んでいましたか?Rubyコード変換リクエスト
def in_list(num, list)
list = [*list]
list.each {|a,b| return (b)? num.sub(a,b) : a if num =~ a}
nil
end
私はRubyの構文知識がほとんどなく、以下の関数を擬似コードに変換して、それがどのように呼び出されるかの例を提供するのに十分親切であることを望んでいましたか?Rubyコード変換リクエスト
def in_list(num, list)
list = [*list]
list.each {|a,b| return (b)? num.sub(a,b) : a if num =~ a}
nil
end
ワウ。それはいくつかの醜いルビーです。ここで
だからnum
実際String
(チップオフは#sub
と#=~
方法の使用されている。
list
が
Regexp
オブジェクトおよび/またはArray
ありますRegexp
および代替品String
オブジェクト。Regexp
のいずれも文字列と一致しない場合、このメソッドはnil
を返します。
対応していないRegexp
が文字列と一致する場合、このメソッドはRegexp
を返します。
ペアRegexp
一致文字列の場合、この方法は、対になった置換テキストとRegexp
マッチする文字列 の一部を置換、および改変String
を返します。
Regexp
が文字列と一致すると、メソッドは返されます - 後でRegexp
が考慮されます。
オリジナルはありませんString
が変更されました。
これは本当にフランケンメソッド、IMHOです。非常に異なることをしようとしているからです。
例コール:
in_list("abe lincoln", [ [/linc/, 'zelda'] ]) #=> "abe zeldaoln"
in_list("abe lincoln", [ [/linc/] ]) #=> /linc/
in_list("abe lincoln", [ [/link/] ]) #=> nil
本当に、戻り値の型の多数で、それはそれは価値があるよりも、お尻の痛みの多くのように思えます。
擬似コードDEF IN-LIST(text, regexps) FOREACH regexp IN regexps IF HAS-MATCH(text, regexp) IF HAS-REPLACEMENT-TEXT(regexp) RETURN REPLACE-MATCHED-PORTION(text, regexp, GET-REPLACEMENT-TEXT(regexp)) ELSE RETURN regexp ENDIF ENDIF ENDFOREACH RETURN NOTHING-FOUND ENDDEF
で
しかし、私が言ったように、これはいくつかの醜い尻のルビーです。私はそれを使用しないでください。これは、このコードで間違ったことがたくさんあることを伝えるコードマーです。
私はRegexps
の配列を持っていた、といくつかのテキストにマッチした最初のものを見つけたい場合は、私がしたい:
# general case
regexps.find { |re| text =~ re }
# example
[ /earn/, /more/, /sessions/, /by/, /sleaving/ ].find { |re| "A baby?" =~ re } # would return /by/
私はRegexp
の収集、置換テキストのペア、およびIを持っていた場合いくつかのテキストの最初の試合を交換したかった、私は私ではなく、実際に最後のためHash
を使用したい、この
# general case
text_dupe = text.dup
pairs.find { |re,replace| text_dupe.sub!(re, replace) }
# example
text_dupe = "One two three four".dup
[ [/ape/, 'frog'], [/our/, 'my'] ].find { |re,replace| text_dupe.sub!(re, replace } } # would return "One two three fmy"
を行うだろうが、それは順序を失うので、元のリストには入って来た(と誰が私はto say 重要ではない、使用方法を知らない)、私はしませんでした。
あなたの投稿時に回答を書いている途中でした。私はregexpのマッチングと同じ結論に戻ってきました。それは何となく醜いことに同意します。 – tomafro
このコードがどのような引数で呼び出されているのでしょうか?私はそれを理解することに亀裂があったが、私はかなり混乱している。元の意図を理解するには、あまりにも賢いか、あまりにも愚かです。 – tomafro
それはあまりにも愚かです。良いコードはコメントであり、意味のある変数名を使用していますが、多くの点でこのコードではありません。 – rampion