ルビーでオプションの値をモデル化するにはどうすればよいですか?ScalaにはOption[]があり、これは私がルビーで探しているものです。
2427 次
6 に答える
5
標準ライブラリには同等のものはありません。自分で定義する必要があります。この記事を参照してください。
于 2011-06-22T06:46:30.910 に答える
4
私は Ruby の専門家ではありませんが、Option に相当するものはないと思います。Ruby はオブジェクト指向であるため、独自の実装を作成することを妨げるものは何もありませんが、静的に型付けされた言語ほど有用ではありません。静的に型付けされた言語では、コンパイラが空のオプションの適切なチェックを強制します。このコンストラクトを使用するための主なポイント。もちろん、いくつかの方法で Option 値を連鎖させる可能性など、他の利点もあります。
于 2011-06-22T06:49:37.587 に答える
2
ルモネードの宝石をチェックしましたか?それはあなたにscalaでモデル化されたOptionクラスを与えます。
require 'rumonade'
[nil, 1, 123].map { |v| Option(v) }
=> [None, #<Rumonade::Some:0x7f2589297768 @value=1>, #<Rumonade::Some:0x7f2589297740 @value=123>]
[nil, 1, 123].map { |v| Option(v).map { |n| n.to_s }.select { |s| s.size > 2 } }.flatten
=> ["123"]
于 2011-09-27T20:45:48.150 に答える
1
nkpart のadt ライブラリの下Maybe
にクラスの例があります。他にも ADT の例があり、ライブラリを使用すると、独自の ADT を簡単に定義できます。examples/common_adts.rb
于 2011-09-27T23:14:07.610 に答える
-8
私は Scala を知らないので、それがあなたの答えだと断言できません。
Ruby では、メソッドを呼び出すときに、パラメーターのデフォルト値を定義できます。
def foo(i_am_mandatory, i_am_optionnal = :banga)
puts i_am_optionnal
end
foo(:pouet, :plip)
=> :plip
foo(:pouet)
=> :banga
この例では、デフォルト値を持つ i_am_optionnal を省略できます。
HTH。
于 2011-06-22T06:37:55.097 に答える