Ruby 初心者スレッド Part 61 [無断転載禁止]©2ch.net

レス数が900を超えています。1000を超えると表示できなくなるよ。
2017/08/25(金) 15:59:11.22ID:HsL9LVKJ
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 60
https://mevius.2ch.net/test/read.cgi/tech/1493398918/

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

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

逆引きRuby
http://www.namaraii.com/rubytips/
2017/11/12(日) 01:19:01.73ID:Ob05ibl6
>>831
もちろんこのスレのことだよ
普段大して話題なんてないんだから、そんなに目くじら立て無くてもいいのになーって思うけどねえ
2017/11/12(日) 01:28:26.85ID:pqrFAwxv
>>832
このスレの初心者?
ここの荒らしはアンチ粘着型だからめくじら立てなくてもってのは通じないよ
ただの雑談だったらいいんだけどねー
834デフォルトの名無しさん
垢版 |
2017/11/12(日) 12:29:55.19ID:qqn9BEpx
質問者がいるんだから雑談やめろとかアホだろ
質問に対する回答以外全部荒らしってどういう事だよ
それに回答者がアンカつければいいだけじゃん
謝辞どころか〆宣言すらない質問者がどれだけいることやら
835デフォルトの名無しさん
垢版 |
2017/11/12(日) 12:35:34.52ID:WkrbFi3G
ずっとこのスレを荒らしてる奴がいるんだが

頭大丈夫?
2017/11/12(日) 13:50:01.60ID:9KdAqRKN
静的型のほうがさ宇ぐれてる云々言う粘着してる奴は確かにいるけど
それ以外のささいな会話も荒らし認定ってどういうことよ
2017/11/12(日) 15:17:44.54ID:SkwCxk0Z
雑談に似せた荒らしを行うから荒らし認定されるんじゃない?
荒らし行為やスレの妨害じゃないなら誰も文句なんて言わないよ

そもそも、この期に及んで質問なんてめったに無いとかレスつけたり、
何ヶ月も荒らされてる事を無かった事にする奴って荒らし本人じゃないのか?
2017/11/12(日) 15:34:09.85ID:GrP4UM5B
>>837
今日の書き込みだけでもおかしなコメがいくつもあるから
やはり荒らしが自演してるんだろうね
こうやって工作して荒らせる環境を作るのが目的だと思う
2017/11/13(月) 11:16:26.32ID:9i4StzNN
rubyのメソッドチェーンがよくわからない
あとフックかけられるポイントも

メソッド呼び終わった直後にフック掛ける方法ってある?
840デフォルトの名無しさん
垢版 |
2017/11/13(月) 20:26:44.92ID:NOdl0XYl
>>839
トレースポイントというものがある
https://docs.ruby-lang.org/ja/latest/class/TracePoint.html

TracePoint.trace(:return, :c_return) do |tp|
  p tp.return_value
end

"A".downcase.upcase.upcase!
# => "a" => "A" => nil
2017/11/13(月) 23:44:35.19ID:9i4StzNN
おおー、これは便利だ
ありがとう
842デフォルトの名無しさん
垢版 |
2017/11/13(月) 23:58:39.44ID:NOdl0XYl
追記

全てのあらゆるメソッドに介入するため、
if tp.path == __FILE__ したり、
if tp.method_id == :method_name したりして範囲を絞ると見やすくなる

他には自家製クラス・モジュールであればprepend使って面白おかしくすることも可能
2017/11/14(火) 19:27:47.47ID:hugtgo3r
コードゴルフで1000までの素数を標準出力に出力ってのをやってるけど
60文字が限界だ。誰か画期的なの教えてくれ。
844デフォルトの名無しさん
垢版 |
2017/11/14(火) 20:35:46.66ID:43++cTdw
過去スレには結構そういうのが載ってると思うけど参考にしてみたら?
今現在はあんまり流行っていない、
というかコードをスレに書かないと誰も乗ってこないと思う

あと、変わったお題ならプチ盛り上ると思う
2017/11/14(火) 20:39:19.62ID:yEmE0LhS
50B
a=[*2..1e3]
p a.each{|e|a.reject!{|v|v!=e&&v%e<1}}
2017/11/14(火) 20:45:40.97ID:yEmE0LhS
47B 切りがないのでこれで終わりにする
p (a=*2..1e3).each{|e|a.reject!{|v|v>e&&v%e<1}}
2017/11/14(火) 20:54:13.19ID:yEmE0LhS
45B これでほんとにラスト
p (a=*2..1e3).each{|e|a-=(2..31).map{|v|v*e}}
2017/11/14(火) 20:54:58.38ID:hugtgo3r
おお流石さらっと回答が。ありがとうございます。俺のぼろ臭いエラトステネスもどきとは一味違いますね。
2017/11/14(火) 21:04:49.82ID:yEmE0LhS
ついでだがPrimeクラスを使ってもいいなら33B
#!ruby -rprime
p *Prime.each(1e3)
2017/11/15(水) 21:17:20.80ID:V8OOXL+L
「Rubyのpublic/private/protectedはaccess controlとしては壊れている」と言われたが、その答えは「確かに。access controlとして作ってないからな」というものであった。
2017/11/15(水) 21:18:26.53ID:V8OOXL+L
publicとprivateも壊れてるんですか?
2017/11/15(水) 21:18:44.62ID:V8OOXL+L
「privateはsendとかでアクセスできるし、サブクラスからも見える」だそうです。確かにそうだ。publicは壊れていないと思いますけど、他2つが(access control として)壊れていたら、そもそも指定できる必要はないとは言えそう。
2017/11/15(水) 21:55:17.62ID:PrGhGlG4
なんだこの自演
2017/11/15(水) 22:31:56.17ID:V8OOXL+L
御大のtwitterの会話を貼り付けただけ
2017/11/15(水) 22:32:21.95ID:V8OOXL+L
すぐ自演とか頭悪ポw
2017/11/16(木) 00:12:57.76ID:EjNhewu+
自演と言うよりは
引用の仕方を知らないんだろうね
2017/11/16(木) 06:47:18.22ID:0Chmg9DF
この反応はやはり荒らしか
858デフォルトの名無しさん
垢版 |
2017/11/16(木) 14:52:27.31ID:L3BAWltd
自演失敗とな?
よし、晒し上げるか
859デフォルトの名無しさん
垢版 |
2017/11/17(金) 21:40:30.22ID:+zjghEIw
sliceで負数を指定したときの挙動の解釈が合ってるか教えてくれ
例えばnに12345って文字列があったとして
p n.slice(0,1)
p n.slice(-1,0)
ってやると1と5が出力される
つまり、絶対値が正数の負数が文字列の後ろから順々に対応してるって解釈で合ってる?
860デフォルトの名無しさん
垢版 |
2017/11/17(金) 21:56:30.56ID:IylgmQJ2
>>859
あってる
StringだけじゃなくてArrayでも同じ
ちなみに二つの整数値を与えるのではなく範囲で終わりを示す方法もよく使われる
p "12345".slice(1..-1) # => "2345" # 二つのピリオド
p "12345".slice(1...-1) # => "234" # 三つのピリオド
p "12345".slice(1..-2) # => "234"
p "12345".slice(1, -1) # => nil # 二つの引数

sliceだけじゃなくて[]でも同様に使う事ができる
2017/11/17(金) 21:57:12.32ID:5DUWZGJy
(-6..6).each{|i|p n[i]}と試せばすぐにわかることをなぜ人に聞くのか
2017/11/17(金) 21:58:54.04ID:5DUWZGJy
というかp n.slice(-1,0)は""じゃないのか
863デフォルトの名無しさん
垢版 |
2017/11/17(金) 22:22:53.66ID:+zjghEIw
>>860
サンクス
ついでに聞くけど
二つピリオドの方は範囲xが『1番目≦x≦-1番目』で
三つピリオドの方は範囲xが『1番目≦x<-1番目』って事でいいの?
2017/11/17(金) 22:48:06.98ID:5DUWZGJy
マニュアル呼んだほうが早い

https://docs.ruby-lang.org/ja/latest/method/Array/i/=5b=5d.html#permalink
https://docs.ruby-lang.org/ja/latest/class/Range.html
865デフォルトの名無しさん
垢版 |
2017/11/17(金) 22:51:39.58ID:IylgmQJ2
>>863
その認識でいい

それと>>862の指摘は正しい
俺様うっかりしてた
2017/11/17(金) 23:17:48.28ID:g+LRYPuD
イミュータブルの話していい?
記憶違いかもしれないけど、なんか将来のRubyでStringがイミュータブルになるって話だかを小耳にしたんだけど、どういうこと?
今のStringって書き換える操作に見えても実は別の生成したStringへ参照を換えているだけだで、
イミュータブルだと思ってたんだけど違うの?
2017/11/17(金) 23:27:32.19ID:2lBbqhr3
>>866
<<したらインスタンスの中身が書き換わるよ
まあRailsがフォークしてMRIは事実上終了だろうから心配いらない
2017/11/17(金) 23:33:09.94ID:urhgHz9b
>>867
ソースプリーズ
2017/11/17(金) 23:44:19.35ID:fWRDFZO8
現実的に考えて、今のRuby界にPython3ショック並の非互換を乗り越える体力はない
そもそも3がリリースされる日が本当に来るのかは怪しいけど、もし出てもRails系には完全スルーじゃないかな
静的型もメタプログラミング全開のRailsに役立つようなものにはならないだろうし
870デフォルトの名無しさん
垢版 |
2017/11/17(金) 23:56:41.31ID:IylgmQJ2
>>866
今はリテラル文字列のオブジェクトが別だけど
ruby3になったらおなじオブジェクトになるって事
今のrubyでもコマンドラインオプションやソースコードのマジックコメントで挙動を確認できる

$ ruby24 -e '5.times{ p "abcdefg".object_id }' 17208605440
17208605280
17208605200
17208605120
17208605020

$ ruby24 --enable frozen-string-literal -e '5.times{ p "abcdefg".object_id }'
17208605640
17208605640
17208605640
17208605640
17208605640

rubyの実装レベルの話だと内部で共有文字列オブジェクトがcopy on writeされるようになってるだけ
ruby3になると共有文字列オブジェクトが直接表に出てくるってことになるんだろうね
2017/11/18(土) 00:42:51.61ID:llwTwelI
一番の違いは文字がイミュータブルになるってことだろ
だからcopy on writeする必要もない
writeできないんだからcopyも不要
2017/11/18(土) 00:49:48.52ID:sDELvJVN
>>869
また静的型かよ
それにRailsのコミッタがどんだけRubyコミッタとしても掛け持ちしているのを知らんのか
2017/11/18(土) 00:50:21.77ID:18l+ABsp
>>872
いつもの粘着君だ
ほっとけ
2017/11/18(土) 00:55:46.00ID:pAjRC1cg
ruby3にショックを起こしそうな変更が大してなさそうな所がショックなのではないだろうか
文字列といえば、SHARABLE_MIDDLE_SUBSTRINGはruby3で標準になるのか誰か知らんか
2017/11/18(土) 01:01:26.66ID:sDELvJVN
>>874
今はArrayだけだもんね
ぜひとも標準にしてもらいたいけど
俺を含めて第三者のC extensionに不安があるからなあ
2017/11/18(土) 02:23:57.54ID:v7CgBLN2
>C extension
詳細プリーズ
2017/11/18(土) 03:03:45.56ID:pAjRC1cg
文字列のデータがヌル終端文字列とは限らないので、char*取る時はStringValueCStr()使うとか
878デフォルトの名無しさん
垢版 |
2017/11/18(土) 04:44:28.98ID:LQXdQwI7
たのしいruby読みとおしたけどあんまたのしくない
2017/11/18(土) 06:34:47.32ID:O/cG1rmo
プログラミングが楽しいんであって
本で勉強するのが楽しいわけじゃないからな
2017/11/18(土) 16:31:16.15ID:6foiYhRZ
関数型言語 Elixir からの影響

文字列が、immutable なら、安全で効率的
2017/11/18(土) 21:45:21.11ID:W95R0KgI
>>866
Rubyで文字列をfreezeしまくるのが流行ってて
なんでかって、最適化のため
> http://d.hatena.ne.jp/ku-ma-me/20151004/p1
> 2 行目は 1 行目の 2 倍くらい速いです。
だもんで、freeze付けまくるっていう手動の最適化が蔓延していて
(二倍も速くなるならせざるを得ない)
なにかCとかアセンブラでシコシコ最適化していた90年代の香りがする
これもRubyが意味もなく遅すぎるのが原因で
主要言語と比べて30〜50倍ぐらい遅いので、3.0GHzの最新CPUで走らせても
実質60〜100MHzの激遅化石CPUで走らせていることになるので
まぁ90年代といわれれば、ちょうどそのあたりかもしれない
> https://qiita.com/sue738/items/6c312672cecd9e0400a2
あの頃はちょっとの速度差がクリティカルで、何か懐かしいね

Rubyはコンピュータに出来ることはコンピュータにやらせる主義なので
プログラマに手動の最適化を強いるし、型チェックもプログラマにやらせる
何か矛盾したことを言っているように思えるが
言語開発者の視点に立って、全力で手抜きして言語処理系を作ることを考えると
別に間違ったことは言ってない
幽遊白書風に言うと、仙水の言う「俺達七人」に君らは入ってないってことだな
2017/11/18(土) 21:46:45.02ID:18l+ABsp
また粘着君か
2017/11/18(土) 22:36:14.71ID:fA1Yzd5Y
早くしたいなら言語変えろよ
JavaでもC#でもGoでもさ
884デフォルトの名無しさん
垢版 |
2017/11/18(土) 23:34:36.39ID:kadopebp
腕振り回すのが早いからって、野球選手にはなれないんだけどね。
2017/11/18(土) 23:41:43.75ID:W95R0KgI
速度が必要なら他の言語を使え、と言いつつも
巷ではfreeze祭り開催中
(事実それが理由で3.0で検討されてるわけで)
やはりちょっとでも早くしたいというね
遅いといっても限度があるんだろうな
1.2倍とか1.5倍とかなら我慢できるが
30〜50倍は別次元というか、もはや別物
折角3.0GHzの最新CPUを使ってるのに
100MHz以下になるとはねトホホ

プログラムは遅くて困ることは有っても速くて困ることはないわけだが
遅くなった原因が、今となっては何のメリットもない動的型を採用したことと
コンパイラの最適化の手抜き、だからな
ちっとも利用者視点じゃなく、単に言語を作る側の手間の都合なわけだが
教祖様よろしく巧みに隠して言いくるめてきたが、もうウソがばれて限界ってところかな
2017/11/18(土) 23:56:34.49ID:W95R0KgI
>腕振り回すのが早いからって、野球選手にはなれないんだけどね。

さすがに意味不明すぎて吹いた
他の主要言語は、腕振り回しているだけだとも?
随分だな
2017/11/19(日) 00:08:39.46ID:ViJ+9/xP
ちょっとどころか3倍速くしたいのがruby3だ
2017/11/19(日) 00:09:28.92ID:ico5wL+/
>>885
じゃぁアセンブラ使っておけば?
2017/11/19(日) 00:30:02.83ID:udvNJGPu
今やC/C++、Java、C#などの主要言語はコンパイラの最適化が鬼だから
常識的には人間がアセンブラで書くより速いわけ
だから書くなら
じゃぁC/C++、Java、C#使っておけば?
だし、言われるまでもなく世の中そうなってて
んーだから何?って感じなんだが

なんというか・・・
速度が速い代わりに使い勝手が悪い、だの
使い勝手が良い代わりに速度が遅い、だの
そういう厨が好みそうなマンガの設定みたいなトレードオフは発生してない
非常だわなぁ

では全てにおいてメリットが無い方式なら
いったい誰が作って、誰が支持するのかというと
これがなかなか北朝鮮のような国があったりもするので
存在していることだけを理由に正しいとは言えない
2017/11/19(日) 00:45:07.64ID:ico5wL+/
>>889
アホか?

C++がマジで使いやすくて速いとか思ってるなら、一回脳みそ洗濯機にかけた方がいいぞ?
C++は速さのために色々と犠牲にした言語だということを理解できないならエンジニアとして
致命的欠陥があると言わざるをえない
2017/11/19(日) 00:50:56.77ID:ANnOsUYp
Javaや.NETは起動時にコンパイルしてるから
実行速度ではなく起動速度が遅い

そしてRailsも起動が遅い。こっちは理由が少し
異なっていて動的型だからコンパイルが不要なんだが
読み込むファイルが多くなりすぎて起動速度が遅い
2017/11/19(日) 02:43:18.14ID:tAVjO9Xo
いくら早くたってC++は複雑で読み書きしにくい
Rubyは実行速度より開発速度に振ってるから
2017/11/19(日) 04:19:06.14ID:/3rRHq6p
>>892
というほどでもないんだよなあ。
とくにC#あたりと比べると。
894デフォルトの名無しさん
垢版 |
2017/11/19(日) 08:33:08.93ID:RgqRbH7C
>>890
C++11以降はRubyよりはるかに使いやすい。
2017/11/19(日) 08:55:34.34ID:kYPwLJsc
スタートアップにはRailsが好まれるというのも眉唾だよな
ソースの量なんて最初のうちはすぐに増えるもんだし、事業が軌道に乗るまでは大きな変更も多いはず
とりあえず今手っ取り早く動くものを作りたいからという理由でRailsを選ぶような奴がテストなんか書いてるわけないし、
テストがないと変更が困難になるという動的型の性質がネックになるのは意外とすぐなんじゃないかという気がする
2017/11/19(日) 09:42:25.92ID:IcfiaN/i
C#は「とても」書きやすいかといわれるとふんぬうううううって感じだ
書きやすいようにするモダンな構造はたくさん含まれてて文法未来も明るいが、全体としてはRubyのほうがまだいいと思う
今のところRubyよりいいなと思ってるのはKotlin+IntelliJ
Javaで書かなければいけない部分がもっと減れば書きやす四天王に入ると思うのでどんどんKotlin部分増やして欲しい
2017/11/19(日) 10:51:15.62ID:/3rRHq6p
C#は、IDEのサポートが前提だからな。
2017/11/19(日) 11:10:12.09ID:tAVjO9Xo
>書きやす四天王
面白そうだからみんなで書いてみれば?

オレの場合書きやすいのはRuby一強で
二位以下はPythonとかLLが団子状態で並ぶけど
2017/11/19(日) 11:42:50.02ID:udvNJGPu
いや、洗脳されてる(というより確信犯←本来の意味でも誤用の意味でも)人の意見は
誰も興味ないというか常に無視されるというか
社民党が何か言っててもみんな聞き流してるわけで
大人な人達の言うところの民主主義というか
そもそも数に入ってないから無視してよいという暗黙の鬼畜現象
2017/11/19(日) 12:15:25.95ID:ico5wL+/
>>899
自分の意見のことですね
よくわかります
901デフォルトの名無しさん
垢版 |
2017/11/19(日) 12:24:31.26ID:lEYmgXHF
同じ事させるなら、「実行速度」がRubyより早い言語が有るのは当たり前。
Rubyは例えばCで書いた巨大ライブラリ・ツールとも言える訳だから。
2017/11/19(日) 13:37:32.97ID:udvNJGPu
↑唐突になんだ?
2017/11/19(日) 14:12:32.54ID:ojBPgPKj
話を変えるけど、
mswin32版のRuby2.4インスコして、今は懐かしきRDEで何か出来ないかハックしてんだけど普通に動くなコレ
動かない部分は、debug2から経由してrde.dllかrde.soを呼ぶデバッグ機能の辺りで、
バイナリについてきたこれらのファイルをロードできないのが原因だけど、
RDE1.1.1バイナリや1.0.1ソース拾えたんで何とかなりそう
904デフォルトの名無しさん
垢版 |
2017/11/19(日) 14:26:48.86ID:GIoVTHnu
RDEはすごく使いやすかったな
1.9や2.x以降も対応してくれるなら今でも使いたい
文字列コード関係とか問題ないの?
2017/11/19(日) 15:34:37.97ID:ojBPgPKj
>>904
特に問題ない
というかRubyの多言語化はCSI方式と呼ばれるもので、
ruby内部では種々の文字コードを認識せずバイナリとして扱い、指定した文字コード用のメソッドでバイナリに処理してるだけだから
マジックコメントでUTF-8指定して(2.x以降はデフォルトがUTF-8だから指定しなくても良い)、RDEもUTF8N指定しとけばOK

後、RDEについてるrde_export.rbみてたらちょっとした書き換えで2.4用の入力補完データを自動で出せるようになってる
RDEハック中だから、他にも聞きたいことあったら言ってくれ
906デフォルトの名無しさん
垢版 |
2017/11/19(日) 19:59:54.94ID:ojBPgPKj
問題は2.4用のrde.dllが無いことだからmswin32ruby1.8用のrde.dllをバイナリ改造して
msvcrt-ruby18.dllのロードをmsvcr100-ruby240.dllに書き換えて、
メソッドあわせれば楽に出来るんじゃないかと思いついたんだけど躓いた

msvcr100-ruby240.dllをPEviewで確認したらrb_str_new2が無いじゃないか
こういった内部に詳しい人、誰かいない?
2017/11/19(日) 21:43:50.59ID:oda4btU4
日経Linux 11月号
Windows Subsystem for Linux (WSL) 特集。
ついに、ベータ版から正式版へ変わりました!

Docker の記事もある

Ubuntu 側では、Dockerデーモンが動かないため、
Windows 側の、VirtualBox に、Vagrant で、CoreOS を入れて、
その中に、Dockerデーモンをインストール

Ubuntu側から、Dockerコマンドで使う

付録は、サーバーがゼロから分かる本、100ページ。
サーバーでできること、77

付録DVD は、
Ubuntu 17.04 日本語 Remix (64 ビット版)
Ubuntu Server 17.04 (64 & 32 ビット版)
CentOS 7.3 LiveGNOME (64 ビット版)
2017/11/19(日) 23:04:24.43ID:xn28G12Z
mrubyをブラウザで実行するまで (WebAssembly) - Qiita
https://qiita.com/noontage/items/da846e78eebd1d3b2a78
2017/11/19(日) 23:16:02.85ID:wHgZOTEo
>>906
外部シンボルの有無だけじゃなくstruct RStringとかRArray、RStructなんかは
要素数が少ない時にRObject内へと埋め込むようになってるし、
文字列オブジェクトとかは文字のエンコーディング情報を
抱えるようになってるしでまず無理

ソースコードを対応するrubyに合わせたパッチで当てて再ビルドした方がまだ近道だろうな
910デフォルトの名無しさん
垢版 |
2017/11/20(月) 08:23:21.29ID:rLtj6AOb
マジで?
ruby2.4(maswin32)いれたRDEのデバッグオプションを"-r debug2"から"-r debug"に書き換えると変数ウィンドウもデバッグも普通に問題なくうごくけど、
変数ウィンドウのオブジェクト表示タブで、一部オブジェクトの型が表示されず"(1)"表記されるのはそれが理由か

それと、rde.dlやrde.soをいれなくても、出来るってことは変数ウィンドウ辺りはRDE本体の機能かな?
これら機能が"debug"や"debug2"にどこまで依存してるのかいまいち分らない

ぱっとみrde.dlやrde.soだけruby2.4(mswin32)に対応したのをコンパイルすれば解決かと思ってたけど、
とりあえず、
SourceForgeやOSDNから拾ってこれるrde 0.9.9.0のソース(1.0.1はソースじゃなくバイナリだった、ごめん。一番新しいソースは0.9.9.0になる)をもう少し見てみるよ
現時点でもデバッグオプションを"-r debug2"から"-r debug"に書き換えればまともに動くんだからそれほど不都合は無いんだけど
2017/11/20(月) 09:56:40.05ID:E4Z6XoUc
RDEってwin7や8、10でも動くの?
2017/11/20(月) 12:04:09.60ID:ohy70QIE
RDE自体書き換えて再ビルドすりゃいいじゃん
ソース何で作ってあんのよ

……Delphiか…
すばらしい言語とすばらしい仕様とすばらしくない会社に翻弄された不遇の子か…
ほかのIDEのアドオンとかに注力したほうがいい…?
2017/11/20(月) 12:10:43.25ID:m3rw4xgt
Delphiは打たれる
2017/11/22(水) 22:47:26.40ID:Iq8RJWyk
RDEもどきはGUI周りはGTKとかQtを使うにしても
基本的にRubyだけで再実装できないものなのかな?
2017/11/22(水) 23:21:49.21ID:ITKojXQF
観念してVSCodeを使おう
TypeScript製なのでRubyistにとっては敵のケツを舐めることになる屈辱的なエディタだけど、他のを使う理由が見つからないレベルの出来
2017/11/22(水) 23:29:38.25ID:5on9dylu
RDEってさして知らないんだけどemacsじゃあかんの?
917デフォルトの名無しさん
垢版 |
2017/11/22(水) 23:33:30.62ID:S4KAr5dn
irbでコードを直接打ち込むとちゃんと動作するんだけどそれと全く同じコードをメソッドとして定義してそれを実行するとできないのなんでよ
2017/11/22(水) 23:53:50.99ID:5on9dylu
>>917
コード書かないで他人がわかるとでも?
919デフォルトの名無しさん
垢版 |
2017/11/23(木) 00:00:05.02ID:Nvdrrync
>>918
def binsort(a)
bin = []
(a.max+1).times do |i|
bin.push(a.count(i))
end
a = []
bin.length.times do |k|
bin[k].times do
a.push(k)
end
end
end
aは整数値の配列
この中身をirbで直接実行するとちゃんとソートしてくれるんだけどbinsort(a)で実行すると何もしてくれないのよ
2017/11/23(木) 00:06:20.01ID:Q47DTjos
irbでもソートされないんだけど?
ちゃんと戻り値使いましょうね

def binsort(a)
bin = []
(a.max+1).times do |i|
bin.push(a.count(i))
end
ary = []
bin.length.times do |k|
bin[k].times do
ary.push(k)
end
end
ary # ←これ
end
921デフォルトの名無しさん
垢版 |
2017/11/23(木) 00:08:55.64ID:Nvdrrync
うちのirbだとさっきのでちゃんとソートされたんだが
2017/11/23(木) 00:14:07.25ID:Q47DTjos
殆どのバージョンで試したけどそのようにはなりませんでした
君の実行環境を書いてください
923デフォルトの名無しさん
垢版 |
2017/11/23(木) 00:21:12.86ID:Nvdrrync
a=Array.new(100) do rand(5) end
とかでaを決めてさっきのコードをirbで実行
それでもう一度aを表示するとソートされた配列が表示されるけど、binsort(a)でやってaを表示するとaそのものは変わってないって状況

だったんだけど
a=[]
のとこを
a.slice!(0..-1)
にしてやったらa自体を変えられた
2017/11/23(木) 00:33:11.45ID:Q47DTjos
へーよかったね
2017/11/23(木) 00:39:33.47ID:BeZbsl9b
日本語として何が言いたいのかさっぱりわからん
同じアルゴリズムなら俺ならこう書く
def binsort(a)
(0..a.max).inject([]){|s, i| s + [i]*a.count(i)}
end
2017/11/23(木) 03:06:34.20ID:AxcPEcxT
これは多分あれだな
実引数aを表示してると思ってるけど実は仮引数aを表示しているパターン
927デフォルトの名無しさん
垢版 |
2017/11/23(木) 08:53:22.23ID:XBDj7YCq
>>915
朝鮮脳かー。
2017/11/23(木) 11:03:40.27ID:AMXsylzt
Ruby書くのにVSCode使ってるわ
Ruby陣営にとっては多少アウェイなのかもしれんが
使いやすければどうでもいい
2017/11/23(木) 11:43:03.92ID:tA8CL5L/
>>916
Emacsでいいよね
MatzもEmacsだし、ある意味公式w
2017/11/23(木) 12:30:20.24ID:UCxNEg1Y
現在のプログラマーにとって
統合開発環境使わないのであれば
VSCodeは王道だろう。

秀丸とか使っているならアウェイだろうけど
2017/11/23(木) 13:33:37.41ID:DqyU4UwD
VSCodeは使用する言語のためにゴリゴリに整えられたemacs的な環境がクソ簡単に作れるのが強いよね
エディタの設定にアホみたいに手間かけてドヤ顔してた奴等がただの老害になってしまった
さすがに30年近く開発環境作ってるだけのことはあるわ
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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