Rubyについて Part 42
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/01/15(土) 17:55:52仲良く使ってね。
Ruby Home Page
http://www.ruby-lang.org/ja/
= 前スレ
【RoR】Rubyについて Part 41【CPAN vs RubyGems】
http://hibari.2ch.net/test/read.cgi/tech/1281473294/
過去スレ・関連スレは >>2-
0951デフォルトの名無しさん
2011/04/25(月) 10:13:25.72Rubyだからなんか特別にベンリな方法があるわけではない
たぶんCでもJavaでもPerlでもPythonでも書けるだろう
むしろPerlはもう無駄にライブラリがあるので、
用途に合致するライブラリがうっかりCPANあたりに存在する可能性はある
0952デフォルトの名無しさん
2011/04/25(月) 14:58:38.66これってどこか他の言語の方言なのか?
[a, b, c]
これをグータラな先輩は
[a, b, c,]
こう書く。
潔癖症な俺はこれを見るたびに最後のカンマを丁寧に削除してコミットし直す。
0953デフォルトの名無しさん
2011/04/25(月) 15:43:43.761行1要素で
a = [
a,
b,
c,
]
のように書く場合に編集が楽になる(行単位で編集できる)のが利点だが、
行内の場合は、末尾コンマを書いても余りメリットないんじゃないだろうか。
「末尾に追加するときに便利」という主張もあるけど、
追加した要素にも結局コンマを付けるわけなので、あまり説得力がないと思う。
0954デフォルトの名無しさん
2011/04/25(月) 15:51:44.99リテラルで列挙子が余分な場合に空要素を追加する言語もあるので、
(たとえば [1, 2, 3, ] は要素 4の配列)
これを安全弁として多用するのはRubyだと思っていい
個人的にはあんまり好きではなく、自分から書くことはない
俺は
「追加のときにカンマ忘れても配列になるので便利」よりも
「追加のときにカンマ忘れて文法エラーになるので親切」を選ぶ
arr = %w[ ] の中に空白あり単語をうっかりコピペして悩むのと根は一緒
行単位差分管理システムだと、編集履歴が1行で済むので本質的というメリットがないでもないが
目的としては1行追加しただけなのに編集履歴は2行になる、というのはあまり気持ちよくない
0955デフォルトの名無しさん
2011/04/25(月) 16:07:49.22a,
b,
c,
]
みたいな書き方で項目を追記、削除していく場合は普通に便利だけどね
ある意味一貫性があって合理的だと思う
一行にまとまってる時は書かないけど
それはそうと次スレは早めに
0956952
2011/04/25(月) 16:23:26.76>>954
>>955
おおなるほど、要素追加時の利便性のためだったのか。
ありがとうございます。
しかし
>リテラルで列挙子が余分な場合に空要素を追加する言語もあるので、
>(たとえば [1, 2, 3, ] は要素 4の配列)
こんな言語があるのならこの癖はつけない方が良さそうですね。。
0957デフォルトの名無しさん
2011/04/25(月) 17:16:27.99>…方言のモトを探すなら、Rubyの方言というべきかもしれない
ええっ、CでもJavaでもPythonでもJavaScriptでも使えるだろ。
JavaScriptではstrictモードで警告が出るけど。
0958デフォルトの名無しさん
2011/04/25(月) 20:04:49.75といっても一行で [1, 2, 3, 4,] みたいなのは見たことないな
一行、一要素での場合だと
diffで差分とるとったり、バージョン管理のときに見やすい
>>957
ふるーいCだと多分書けない
俺の知ってる範囲ならPerlが最初だけどLisp系は知らん
0959デフォルトの名無しさん
2011/04/25(月) 20:27:05.93Lisp系は大概リストの要素を区切るのが空白文字
だから末尾に空白文字あっても単語の区切りでしかなく
そもそも「末尾の区切り文字の後に何もない」という状況が存在しない
0960デフォルトの名無しさん
2011/04/25(月) 22:14:30.99みたいに書かれたら要素の書き忘れなのか心配になるだろ。
要らんもんを書くなバカタレ!
って言いたいわ。
0961デフォルトの名無しさん
2011/04/26(火) 00:16:39.39単行ではまず要らないな
0962デフォルトの名無しさん
2011/04/26(火) 06:55:50.24みんなで作ってるなら書くな。
これでよし。
説明おわりっ!
0963デフォルトの名無しさん
2011/04/26(火) 09:21:02.37empty?あるからrubyはこういうもんだと思っていたら、
nil?使うのがやっぱり習慣なんだな。罠にはめられた気分。
0964デフォルトの名無しさん
2011/04/26(火) 09:22:02.46jitが効くのはjrubyまでで、rubyスクリプトまではネイティブコンパイルされてないだろう。
その論理だと、cで実行形式作ってるrubyインタプリタでもrubyスクリプトがネイティブコンパイルされて実行されてることになってしまう。実際はそんな事無くて普通にインタプリタ実行。
0965デフォルトの名無しさん
2011/04/26(火) 09:54:12.87empty? は「無い」ことを表すものじゃない
「コンテナがあるのは分かってる、でもそれは空なのか?」ってものだ
オブジェクトに対して、そもそも存在するかを調べるなら nil? を使うべし
0966デフォルトの名無しさん
2011/04/26(火) 09:57:46.95Object#nil? はオブジェクトが存在していないとそもそも呼べない
自分が NilClass のインスタンスであるかどうかを調べて真偽を返す Object クラスのメソッドでしかない
…まあ、なんだ、>>891の考え方自体があまり Ruby にフィットしないのだな
0967デフォルトの名無しさん
2011/04/26(火) 10:00:45.70responed_to? と書いて色づけされなくて一瞬悩むのもよくやる
0968デフォルトの名無しさん
2011/04/26(火) 10:29:49.98if obj.nil? は obj が nil か否か
if obj は obj が真か偽か
0969デフォルトの名無しさん
2011/04/26(火) 10:32:00.07Ruby以外の言語だとnil?と同じ意味でempty?(と同じ機能のメソッド)を使うの?
0970デフォルトの名無しさん
2011/04/26(火) 10:46:53.460971デフォルトの名無しさん
2011/04/26(火) 10:50:01.44→組み込み向け
なんかJavaが通った道とおなじだな。
要するに「スクリプト言語Ruby」に置き換えて後を追いかければ
良く知らないファンドちゃんからからお金ちゃんがもらえるのう。
0972デフォルトの名無しさん
2011/04/26(火) 13:07:40.59Lisp系とかだと、空リストと無参照はどちらも null じゃないっけな
あれのリストは「要素+次の要素への参照」というデータが連なったものだから
リスト終端、空リスト、無参照はほぼ一緒ってことになる
明示的な nil や null でなく、真偽値としてなら「空配列(リスト) → 偽」になる言語は結構多いから
Rubyに来たとき配列にempty?を使うのを見て「真偽はempty?で調べるのかぁ」とか勘違いしちゃったのかも知れない
0973デフォルトの名無しさん
2011/04/26(火) 13:10:00.450974デフォルトの名無しさん
2011/04/26(火) 16:40:41.19> >>917
> jitが効くのはjrubyまでで、rubyスクリプトまではネイティブコンパイルされてないだろう。
されてる。
ttp://jruby-ja.blogspot.com/2010/06/jruby.html
要は、jrubyチームは超頑張ったので
rubyソース→構文木→バイトコード
まで出来るようになってて、
バイトコードからネイティブコードへはJVMがよきにはからってくれてると。
付随してjavaをはじめとしたJVM上の他言語もシームレスに呼べるようになってて非常に強力になっているという。
0975デフォルトの名無しさん
2011/04/26(火) 21:30:51.18ただしSchemeでは空リストも真。というか#f以外は全部真として扱われる。
0976デフォルトの名無しさん
2011/04/26(火) 21:37:53.62emptyが実装されているクラスの場合
「変数objがnilかどうか」と「変数objの状態がemptyか」のチェックは別ものでしょ
if obj.nil? || obj.empty?
とかよく使うし
# Java風に書くと if (null==obj || obj.isEmpty())
めんどくさければblank.rbみたいに
Objectにメソッド追加しちゃえばいいし
ttp://www.koders.com/ruby/fidE878628590E26A82065AB2A491566FAB8159F9A2.aspx?s=.rb
0977デフォルトの名無しさん
2011/04/27(水) 09:38:13.300978デフォルトの名無しさん
2011/04/27(水) 10:06:47.53empty は限られたクラスの限られた状態を表してる
…まあ、オブジェクトを情報コンテナだと思うかどうかに依存するんだけども
Time.new は空のオブジェクトで、別途時刻を設定して初めて時刻として機能するとか
class Time
def initialize; @time = nil; end
def at(t); @time = t; end
def inspect; @time.to_s; end
def empty?; @time.nil?; end
def self.now; o = new; o.at(`date`); return o; end
end
こんな感じ
0979デフォルトの名無しさん
2011/04/27(水) 10:14:32.96nil? は制御構造ではなく、ただのメソッド
empty? も制御構造ではなく、ただのメソッド
0980デフォルトの名無しさん
2011/04/27(水) 10:18:14.58「変数は値を格納する箱のようなものです」という不適切な
説明を鵜呑みにしている輩ではなかろうか。
0981デフォルトの名無しさん
2011/04/27(水) 10:51:11.510982デフォルトの名無しさん
2011/04/27(水) 11:07:01.57箱説は意外と残ってる?
>>981
何日も前から言われててまだ立ってないんだから、
スレ立てできる人がいないかスレ立ての価値が認められてないかどっちかだろ
0983デフォルトの名無しさん
2011/04/27(水) 11:30:09.97メソッドチェーン中にぬるぽでもよきに計らってくれる
うまい書き方は無いものか
Refinement が導入されたら
maybe{ このブロック中だけでNil#method_missingをどうにかする }
みたいなことできるのかな?
0984デフォルトの名無しさん
2011/04/27(水) 11:32:29.820985デフォルトの名無しさん
2011/04/27(水) 11:32:51.31立てられるんだけど携帯なんだよな
テンプレを託していいんなら適当に立てるよ
0986デフォルトの名無しさん
2011/04/27(水) 18:22:19.830987デフォルトの名無しさん
2011/04/27(水) 21:00:31.360988デフォルトの名無しさん
2011/04/27(水) 23:11:37.20学生にRubyやらせる大学もあるからな。そんなのかわいそうだろ。
0989デフォルトの名無しさん
2011/04/27(水) 23:53:26.38新人にCOBOLを一週間で叩き込んでドナドナする
ウチの会社よりマシやん
大学はPascalだったな、数学系だとFORTRANとかなのか?
0990985
2011/04/28(木) 00:02:16.80Rubyについて Part 43
http://hibari.2ch.net/test/read.cgi/tech/1303916370/
マジありがとう。
0991デフォルトの名無しさん
2011/04/28(木) 00:22:35.912-3は適当にやっといた
0992デフォルトの名無しさん
2011/04/28(木) 00:38:11.72おつ
0993デフォルトの名無しさん
2011/04/28(木) 00:55:32.35C++よりはマシかと…
0994デフォルトの名無しさん
2011/04/28(木) 06:18:22.62だよな。今時はPHPだけ刷り込ませるのが普通。
0995デフォルトの名無しさん
2011/04/29(金) 00:01:04.170996デフォルトの名無しさん
2011/04/29(金) 05:16:49.160997デフォルトの名無しさん
2011/04/29(金) 06:14:44.730998デフォルトの名無しさん
2011/04/29(金) 06:14:59.750999デフォルトの名無しさん
2011/04/29(金) 06:15:24.19全てのRubyプログラマを馬鹿にする言葉だぞ
1000デフォルトの名無しさん
2011/04/29(金) 06:15:39.22これは定説です。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。