Blank?=False

「呉下の阿蒙にあらず」をモットーにしたITエンジニアの日々

Qiitaに投稿した記事の検証

Qiitaにこんな記事を投稿してみました。

qiita.com

それで頂いたコメントに付いて検証してみます。

"",''の表現

"",''で囲んだ文字列,,と説明するべきでした。

foo.bar=bazは代入じゃない!

コレは指摘通り、実体はこうなっています。

class Foo
 def bar=(str)
    @bar = str
 end
end

foo = Foo.new
foo.bar="test" #=>"test"

なので、bar=というメソッドの引数に"test"を渡しています。なので
代入ではない
なんですね。
というわけで、この話をを説明するなら

def foo(bar)
  bar
end

foo = "test"
foo "test"

という感じに書くのが正解でした。

日本語も使えるよ?

コレは本気で知りませんでした。

qiita.com

試しにpryで検証してみました。

ユーザー名 = "Taro"
puts ユーザー名 #=>Taro


できました。
↓知った時の顔
f:id:stonebeach-dakar:20160723104137j:plain

ちなみに、日本語を使って良いのかという話ですが、個人的にはまぁアリじゃない?というスタンスです。
と言っても、いちいち入力切り替えがめんどくさいし、英語と日本語が混ざったコードは検索がめんど臭くなりやすいので、コーディングルールをしっかり作る必要はあるなーと思います。

ArgumentErrorじゃなくね?


はい。
。。。なんでArgumentErrorって書いたんでしょう。。。 pryで検証していて、考えないでコピペってしまったのが原因ですかね。。(遠い目)

指摘通り、bazという変数は存在しないためNameErrorが発生します。。。

 foo=baz #=> NameError: undefined local variable or method `baz' for main:Object

ArgumentErrorは引数エラーなので、例えば

def foo(bar)
  bar
end

foo "test", "test2" #=>ArgumentError: wrong number of arguments (2 for 1)

まとめ