26

私は通常します

 value = input || "default"

したがって、input=nilの場合

 value = "default"

しかし、どうすればこれを行うことができますか?代わりにnil、空の文字列''を次のようにカウントしますnil

私がそうするなら私はしたい

input = ''
value = input || "default"
=> "default"

なしでこれを行うためのシンプルでエレガントな方法はありifますか?

4

3 に答える 3

65

Railsは、必要なことを正確に実行するすべてのオブジェクトにプレゼンスメソッドを追加します

input = ''
value = input.presence || "default"
=> "default"

input = 'value'
value = input.presence || "default"
=> "value"

input = nil
value = input.presence || "default"
=> "default"
于 2013-01-19T14:36:56.250 に答える
6

私は通常このようにします:

value = input.blank? ? "default" : input

入力が定義されていない可能性がある場合に応じて、次の方法で入力を保護できます。

value = input || (input.blank? ? "default" : input)
# I just tried that the parentheses are required, or else its return is incorrect

純粋なルビー(Railsに依存しない)の場合、次empty?のように使用できます。

value = input || (input.empty? ? "default" : input)

またはこのように(これを提供してくれてありがとう@substantial)

value = (input ||= "").empty? ? "default" : input
于 2013-01-19T14:30:55.367 に答える
0

多分無関係ですが、私はこのようなハイラインを使用します:

require "highline/import"

input = ask('Input: ') { |q| q.default = "default" }

Railsなしで動作します。本当にきちんとした解決策。

于 2015-05-18T09:14:52.523 に答える