Ruby 初心者スレッド Part 62

レス数が1000を超えています。これ以上書き込みはできません。
2017/11/24(金) 00:35:29.31ID:rLZHdQ3Q
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 61
https://mevius.5ch.net/test/read.cgi/tech/1503644351/

るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/
980デフォルトの名無しさん
垢版 |
2018/05/04(金) 16:02:47.13ID:FNtgJ1dj
>>912
Ruby、Pythonが主流なのか?

俺、Ruby使いだけど、主流言語使ってる気分にはなれない。
2018/05/04(金) 16:16:59.88ID:YzOLlJfQ
今主流言語と言えるのはJavaScriptのみだからね
2018/05/04(金) 16:24:40.64ID:plo/RuVs
google、ms・・・流れ込んでる資金量・人員数が違う
あれだけ人・金かけられたらどんなクソ言語でも主流になる
そうさせたのはブラウザで唯一実行可能というアドバンテージだったがそういう意味では今後はrustやgoにも可能性はある
rubyはそれもない
2018/05/04(金) 17:01:30.15ID:HDydWALv
>>982
Dartの悪口はそこまでだ
984デフォルトの名無しさん
垢版 |
2018/05/08(火) 04:34:33.88ID:ws+EcsEk
@lru_cache(maxsize=None)
def fib(n):
if n < 2:
return n
return fib(n-1) + fib(n-2)

>>> [fib(n) for n in range(16)]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610]

Ruby には、上のPython のような、デコレーターは無いの?

上はフィボナッチだが、引数・答えを、メモ化するような関数はある?
2018/05/08(火) 07:23:01.16ID:6Z/Mi3tg
>>984
古い記事だけど、例もフィボナッチでちょうどよさげ
http://mickey24.hatenablog.com/entry/20100906/1283769623
2018/05/08(火) 07:44:23.18ID:6Z/Mi3tg
gem もあった
https://github.com/matthewrudy/memoist
2018/05/08(火) 09:01:44.06ID:ws+EcsEk
class A
def initialize (a = 5)
@a = a
end
p (0..@a)
end

p a = A.new

>p (0..@a)
@a が初期化されていないのか、エラーになる

クラス内の地の文は、A.new・initializeよりも、先に実行されてしまうのか?

>>985-986
ありがとう
2018/05/08(火) 09:09:56.84ID:XzXTdruW
>>987
その通り。具体的にはファイルを読み込んだ時に実行されるよ
2018/05/08(火) 12:18:20.40ID:XzXTdruW
スレたてられなかったから誰か代わりに建ててくれないか

>>987
ついでだけどその書き方だと p (0..@a) の @a は A のインスタンスのインスタンス変数じゃなくて、 A という『Class クラスのインスタンス』のインスタンス変数だから注意ね
2018/05/08(火) 14:05:39.62ID:XzXTdruW
と思ったら結構前に次スレ立ってたんだね……重複しなくてよかった
https://mevius.5ch.net/test/read.cgi/tech/1523954817/
2018/05/08(火) 22:51:57.39ID:FvmTtIIh
>>987
クラス内の文は、記述順に実行される。
defは、メソッド定義の宣言部というよりは、実行文なので、同様。
992987
垢版 |
2018/05/08(火) 23:24:38.69ID:ws+EcsEk
class A
def initialize (a = 5)
@a = a
puts "init : #{@a.class}" # 1
end

puts @a.class # 2
end

p a = A.new
p b = A.new(2)

出力結果
NilClass

init : Integer
#<A:0x00000000050dc230 @a=5>

init : Integer
#<A:0x00000000050dc078 @a=2>

実行前のファイル読み込み時に、1回だけ、#2 puts が呼ばれて、
initialize内の#1 puts は、new 毎に呼ばれる
2018/05/08(火) 23:28:50.06ID:XzXTdruW
当たり前だと思うのだが、何が言いたいのか不明
2018/05/09(水) 00:19:25.75ID:p+TFQEkm
ファイル内の空行数を数える

ruby -e "puts File.read(\'test22_data.txt\').scan(/^$/).length"
ruby -e 'puts File.read(\"test22_data.txt\").scan(/^$/).length'

Windows PowerShell で、1-liner を実行する際、
クォーテーション内に、クォーテーションがある時に、\ でエスケープしないと、
PowerShell が、内側のクォーテーションを除去してしまって、エラーになるけど、
皆こういう場合、どうしてる?
2018/05/09(水) 00:37:53.06ID:aySw10Ot
WindowsでRubyは苦行
2018/05/09(水) 02:06:31.30ID:VltSHCvQ
>>994
%qクォートを使う。
997デフォルトの名無しさん
垢版 |
2018/05/09(水) 08:36:03.80ID:DadRmw9B
>>995
+1
998デフォルトの名無しさん
垢版 |
2018/05/09(水) 08:36:55.27ID:DadRmw9B
>>996
ほんそれ
999デフォルトの名無しさん
垢版 |
2018/05/09(水) 08:37:56.36ID:DadRmw9B
>>994
1-liner にこだわるのはなぜ
1000デフォルトの名無しさん
垢版 |
2018/05/09(水) 08:38:27.55ID:DadRmw9B
Ruby 初心者スレッド Part 63
https://mevius.5ch.net/test/read.cgi/tech/1523954817/
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 166日 8時間 2分 58秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況