LoginSignup
2
0

More than 5 years have passed since last update.

第8回つぶやき勉強会 ~ `||=` に魅せられて ~

Last updated at Posted at 2016-12-05
1 / 8

※今回の問題は、解答に確証も自信もありません。

=> 正解らしいものを教えてもらったので、末尾に追記しました。

a ||= 1

上と同じことを、別の書き方で実現してください。


不正解 その1

a || (a=1)
# => NameError: undefined local variable or method `a' for main:Object

不正解 その2

a = (a||1)

これは、次のようなクラスがあった場合異なります。


恣意的で捻くれたクラスですが....

class Hoge
  def v
    @v ? nil : 1
  end

  def v=(val)
    @v = val
  end
end

ぼくなりの解答

(a=1 unless a) || a

いまのところ合っていると思ってるのですが、間違っているかもしれません。ぜひ反例を教えてください。 :bow_tone4:

別解答

if defined?(m) && m then m else m = 1 end

以上です。ありがとうございます。


追記

上のリンクに以下のような記述がありました。

x = "(some fallback value)" unless respond_to? :x or x

たぶん、これが正解で、ぼくの解答は少し間違っていると思います。ただ、反例を導き出す元気が今はありません。 m(..)m

2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0