- 【Python】スクリプト バトルロワイヤル47【pl,rb,php,js】 [転載禁止]©2ch.net
825 :デフォルトの名無しさん[sage]:2015/02/22(日) 01:45:38.69 ID:vo1EKyKq - >>819
引数にどっちでも受け取れるメソッドを作ろうと思ったら明示的に型チェックするか無条件にto_sしなきゃいけない 前者がクソなのはさすがに>>819の腐った目にも明らかだと信じたいが、 後者はシンボルと文字列以外でも何でも通ってしまってバグの原因になる
|
- ★★Java質問・相談スレッド172★★ [転載禁止]©2ch.net
392 :デフォルトの名無しさん[sage]:2015/02/22(日) 07:44:41.79 ID:vo1EKyKq - >>390
誰も使ってないからだろ 目立たないからデモ作るだけなら必要ない
|
- 【Python】スクリプト バトルロワイヤル47【pl,rb,php,js】 [転載禁止]©2ch.net
831 :デフォルトの名無しさん[sage]:2015/02/22(日) 07:54:50.02 ID:vo1EKyKq - >>830
RubyはStringとSymbolを明確に区別するので { :x => 1 }[“x”] や { “x” => 1 }[:x] はnil(null相当)になる JavaScriptを知ってる奴が必ず一回はやらかすのは { x: 1 }[“x”] だな { x: 1 } は { :x => 1 } と同じ意味だから、結果はnilになってしまう
|
- 【Python】スクリプト バトルロワイヤル47【pl,rb,php,js】 [転載禁止]©2ch.net
833 :831[sage]:2015/02/22(日) 08:19:14.17 ID:vo1EKyKq - ちなみに、インスタンスのメソッドを名前で取得する obj.method メソッドや
インスタンスフィールドを名前で取得するobj.instance_variable_methodメソッドなどはシンボルでもメソッドでもどっちでもいける 意味的にはシンボルしか受け付けないのが正しいはずだが、このダブスタがRuby
|
- 【Python】スクリプト バトルロワイヤル47【pl,rb,php,js】 [転載禁止]©2ch.net
836 :デフォルトの名無しさん[sage]:2015/02/22(日) 10:44:33.19 ID:vo1EKyKq - >>835
そうじゃなくて、無条件に全部to_sしたら全てのオブジェクトを受け入れてしまうでしょ 値の文字列表現としてto_sが適切に実装されてる型だけならそれでもいいけど、 デバッグ用に適当な実装になってるのも多いから予期せぬ動作の原因になる
|
- 【Python】スクリプト バトルロワイヤル47【pl,rb,php,js】 [転載禁止]©2ch.net
838 :デフォルトの名無しさん[sage]:2015/02/22(日) 12:05:56.76 ID:vo1EKyKq - かもしれないが、困ることはあり得るよね、という話をしてるんだよ
少なくとも、文字列が入るところにシンボルが来る可能性を常に考慮しなきゃいけないだけでも結構なストレスだよ
|
- 【Python】スクリプト バトルロワイヤル47【pl,rb,php,js】 [転載禁止]©2ch.net
842 :デフォルトの名無しさん[sage]:2015/02/22(日) 12:29:41.28 ID:vo1EKyKq - >>840
>>833に書いた通り、Rubyのコアな部分でも意図的に混同した扱いをしているケースは多いし ライブラリでもそうなってるのは多いぞ 特に { key: value } が使えないのは痛いしな
|
- 【Python】スクリプト バトルロワイヤル47【pl,rb,php,js】 [転載禁止]©2ch.net
844 :デフォルトの名無しさん[sage]:2015/02/22(日) 14:19:20.41 ID:vo1EKyKq - 俺が区別したいかどうかは別にして、区別したくない人が多いのは事実だからな
大抵のユーザーはシンボルを文字列リテラルの書き方のバリエーションくらいにしか考えていなくて 多くのライブラリはそれに合わせている 客観的に見れば設計ミスだと言わざるを得ないね
|
- 【Python】スクリプト バトルロワイヤル47【pl,rb,php,js】 [転載禁止]©2ch.net
851 :デフォルトの名無しさん[sage]:2015/02/22(日) 19:08:16.83 ID:vo1EKyKq - >>847
それStringじゃいけない理由もないだろ? 静的言語のEnumみたいに色ならColor列挙型の値でないとコンパイルエラーになれば意味はあるけど、 列挙型かそれ以外かなんて区別にはほとんど意味がないし、 その間違いですらも結局実行時にバグとして表れるまでは分からない。 Symbolは本来>>850の言う通りオブジェクトやハッシュのメンバ名として使うんだよ。 言語処理系作る人の感覚だとその方が文字列でメンバ検索するより綺麗だから。
|
- 【Python】スクリプト バトルロワイヤル47【pl,rb,php,js】 [転載禁止]©2ch.net
857 :デフォルトの名無しさん[sage]:2015/02/22(日) 22:17:06.17 ID:vo1EKyKq - 安定して人並みの生活を送りたいならJava一択
Web系は技術だけじゃなくビジネスセンスが無いと悲惨な奴隷
|