Qiitaに投稿した記事の検証
Qiitaにこんな記事を投稿してみました。
それで頂いたコメントに付いて検証してみます。
"",''の表現
""
,''
で囲んだ文字列,,と説明するべきでした。
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"
という感じに書くのが正解でした。
日本語も使えるよ?
コレは本気で知りませんでした。
試しにpryで検証してみました。
ユーザー名 = "Taro" puts ユーザー名 #=>Taro
できました。
↓知った時の顔
ちなみに、日本語を使って良いのかという話ですが、個人的にはまぁアリじゃない?
というスタンスです。
と言っても、いちいち入力切り替えがめんどくさいし、英語と日本語が混ざったコードは検索がめんど臭くなりやすいので、コーディングルールをしっかり作る必要はあるなーと思います。
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)
まとめ