1 名前:デフォルトの名無しさん [2020/12/25(金) 04:24:27.68 ID:aa9Khe9z0.net] プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ 質問するときは、OSやRubyのバージョン、エラーメッセージを書いて下さい。 Ruby on Rails については、WEBプログラミング板で 前スレ Ruby 初心者スレッド Part 66 https://mevius.5ch.net/test/read.cgi/tech/1578068134/ るりまサーチ (リファレンス検索) rurema.clear-code.com/ Rubyist Magazine - るびま jp.rubyist.net/magazine/ 逆引きRuby www.namaraii.com/rubytips/ Ruby コミュニティ公式 https://www.ruby-lang.org/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2 名前:デフォルトの名無しさん [2020/12/25(金) 04:26:07.55 ID:aa9Khe9z0.net] Rubyの絵本、2008 たのしいRuby 第6版、2019 3ステップでしっかり学ぶ Ruby入門、2018 かんたん Ruby (プログラミングの教科書)、2018 プロを目指す人のためのRuby入門、2017 改訂2版 パーフェクトRuby、2017 改訂2版 Ruby逆引きハンドブック、2018 (中級者向け) Effective Ruby、2015 (中級者向け) メタプログラミング Ruby 第2版、2015 (中級者向け) リファクタリング:Rubyエディション(復刻版)、2020(中級者向け) RubyでつくるRuby ゼロから学びなおすプログラミング言語入門、2017 (中級者向け) Rubyのしくみ、2014 (中級者向け) 改訂4版 基礎 Ruby on Rails、2018 パーフェクト Ruby on Rails 【増補改訂版】、2020 Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例、2014 オブジェクト指向設計実践ガイド Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方、2016 Seleniumデザインパターン&ベストプラクティス、2015 Webで使えるmrubyシステムプログラミング入門、2020
3 名前:デフォルトの名無しさん [2020/12/25(金) 04:27:50.07 ID:aa9Khe9z0.net] 開発環境 RDE Windows用IDE https://ja.osdn.net/projects/sfnet_rubyde/ 以下、RDEの使用説明 rubyde.sourceforge.net/hiki/ja/FrontPage.html RDEのデバッグ機能を使う場合、設定においてデバッグオプションを「-r debug2」から「-r debug」と書き換えて、 ruby付属のdebug.rbを使うようにすること。 RDE付属のdebug2.rbは、ruby1.8用のスクリプトのため、現在のrubyのversionには使えません サクラエディタ Windows用高機能エディタ https://ja.osdn.net/projects/sfnet_sakura-editor/ 以下、ruby用設定の説明 supportdoc.net/support-sakura/ruby.html Emacs GNUの高機能エディタ Vim Emacsと同じぐらい有名なCUIベースのエディタ VSCode マルチOSに対応したマイクロソフト社製のソースコードエディタ https://code.visualstudio.com/download
4 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 19:37:36.98 ID:HoUTdWdQp.net] 祝 ruby3.0.0
5 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 19:42:54.83 ID:cyV6b5qO0.net] めでたくもなんともない ムダに歳くったロートル
6 名前:デフォルトの名無しさん [2020/12/25(金) 22:20:13.76 ID:DVzhLIY40.net] 形態素ゲイムRuby松本まじコスロ by猪瀬色彩空間
7 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 22:53:56.79 ID:gC1vp0cV0.net] 速度3倍ってマジ?
8 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 05:22:31.21 ID:MLavBbcpr.net] >>1 乙 3.0おめでとう
9 名前:デフォルトの名無しさん mailto:sage [2020/12/27(日) 22:23:18.64 ID:3h7fei6ma.net] $ gem install clipboard $ irb irb> require 'clipboard' => true irb> puts Clipboard.paste 朝鮮・韓国兵の扱い方(取り扱いマニュアル) 旧日本陸軍・米軍・旧ソ連共産党 | memo => nil
10 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 21:08:07.24 ID:JL6YsW3y0.net] Rubyってトップレベル関数はprivateにできないの? やっぱり、Pythonみたいに__ってしてあげるしかないのかな
11 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 11:46:48.14 ID:NZwVboWN0.net] 2.7で作ったアプリを3.0で動かしてみたらエラーでした
12 名前:デフォルトの名無しさん mailto:sage [2021/01/02(土) 17:25:59.70 ID:z1ZKe1zV0.net] rubyで自分用のCUIアプリを作成しています。質問させて下さい。 rubyではクラスごとにファイルを分けるべきでしょうか? 名前空間ごとにディレクトリを作成すべきでしょうか? また、とりあえず他のソースコードを何個か見て、以下のディレクトリを作成しています。 bin/ lib/ binの中はコマンドライン解析用のソースコードのみで、他はlibの中に全部入っています。 この配置は一般的でしょうか? また、テスト用のソースコードやデータはどのように配置すべきでしょうか? 私の作っているソフトウェアの規模は個人用なので小規模で2万行程度です。ただし、最終的にはこの倍はいきそうです。 しかしながら、勉強も兼ねて、なるべくrubyのお作法に従うようにしたいです。 よろしくお願いいたします。
13 名前:(u_・y) [2021/01/04(月) 11:01:26.70 ID:oZidFLopa.net] 俺様なら作法とか無視して最低3フォルダは作るけど 0、bin 1、そのアプリのみで使う事が想定されてるファイル群 2、他のアプリでもそのまま使える完全に分離してるmodule/class群 どうしても一般論でやるってところに拘るならrubyコミッターのソースコード探して見てくれば良い 標準があるとすればそれ
14 名前:(u_・y) mailto:sage [2021/01/04(月) 11:24:34.37 ID:oZidFLopa.net] (u_・y) 質問です。世の中を自分の好きなように動かしたいのですが。 (u_・y) "rubyを使う"という条件に限定した場合、何をするのが最適解でしょうか?
15 名前:デフォルトの名無しさん mailto:sage [2021/01/04(月) 13:08:51.30 ID:VbZo6FxW0.net] >>12 gemの構成に従うのが一般的 $ bundle gem <project_name> でscaffoldしてくれる もう少し詳しく知りたければオライリーから出てる 「Build Awesome Command-Line Application in Ruby 2」の9章
16 名前:デフォルトの名無しさん mailto:sage [2021/01/04(月) 13:22:27.53 ID:yec7Hk1C0.net] Rails のプロジェクト構成に従えば? プロジェクトルート直下のフォルダは、 ruby -e 'puts Dir.glob( "*" ).select{ |file| File.directory? file }.sort.join( ", " )' app, bin, config, db, lib, log, node_modules, public, storage, test, tmp, vendor
17 名前:(u_・y) [2021/01/04(月) 20:10:47.67 ID:0ES7puYLa.net] 問 1 以下のソースコードを実行したときに最終的に表示される文字列をこたえよ ※ まずは答えを見ずに考えてね! def b x x + " rails" end def f(x=<<-TEXT) return p b x ; python最高(*'▽') on #{print "ruby "} TEXT end f 答え: https://ideone.com/G9U1Ab
18 名前:デフォルトの名無しさん mailto:sage [2021/01/04(月) 21:25:31.68 ID:yms/N9cK0.net] ありがとうございます。 いただいた回答を確認させていただきましたが、bundle2.7 gem NAMEで出てくる内容が、私の知りたい回答に近いようです。 参考にさせていただきます。
19 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 19:10:35.24 ID:khtEPZ8Z0.net] CSVファイルの読み込みで下みたいに変換することってできる? "0123",1 => ["0123", 1]
20 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 19:30:04.21 ID:MfDAyFl4r.net] >>19 CSV.parse '"0123",1', quote_char: ?' #=> [["\"0123\"", "1"]]
21 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 00:17:02.38 ID:2hpPqzu40.net] CSV では文字列・数値とか、各列の型を指定できなかったっけ? 各列の変換器
22 名前:デフォルトの名無しさん [2021/01/06(水) 02:45:29.91 ID:X+T/DkCZ0.net] プログラミング自体初心者です ファイバーを全く理解していなかったので勉強してみているのですが class Test def initialize @fiber = Fiber.new {test} end def test p "これがファイバーのブロックで与えた処理だ" Fiber.yield p "理解したかな???" end def fiber_test(count = 60) @fiber.resume p "帰ってきたぞ" @fiber.resume p "再び帰ってきたぞ" count.times do {Fiber.yield} end end このコードを組んで別の場所でTest.new.fiber_testとインスタンスを作成して呼び出してみたのですが @fiber.resumeでtestメソッドへ移動し Fiber_yieldでfiber_testメソッドへ戻ることはわかったのですが testメソッドで@fiber.resumeを実行すると親子関係がおかしくなるからかFiberErrorを起こすのに対し fiber_testメソッド側でFiber_yieldを実行すると一瞬画面が止まるだけでコンソールにも何も表示されません これは何が起きているのでしょうか? 引数のcountを増やすほど長く画面が固まります
23 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 05:27:15.07 ID:jWwxeiIUr.net] >>20 >>19 を読み間違えていたので訂正 CSV.parse '"0123",1', converters: ->(f, i){i.index.zero? ? f : f.to_i} # => [["0123, 1]]
24 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 06:10:07.47 ID:2hpPqzu40.net] Fiber は、coroutine みたいなものか 初心者がやるものじゃない。 10年以上やってから、やるもの
25 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 06:33:24.80 ID:2hpPqzu40.net] f = Fiber.new do n = 0 loop do puts "子の前 : #{ n }" Fiber.yield( n ) # 親へ puts "子の後 : #{ n }" n += 1 end end 2.times do |idx| puts "親の前 : #{ idx }" puts "親の値 : #{ f.resume }" # 子へ puts "親の後 : #{ idx }" end 出力 親の前 : 0 子の前 : 0 親の値 : 0 親の後 : 0 親の前 : 1 子の後 : 0 # 要注意! 子の前 : 1 親の値 : 1 親の後 : 1
26 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 11:25:26.71 ID:HlI/jGZrM.net] >>22 そのコードはfiber_testメソッドのFiber_yieldしてるところで can't yield from root fiberのエラーになるよ エラーにならないならrubyのバージョンと再現可能なコードを書いて
27 名前:(u_・y) mailto:sage [2021/01/06(水) 12:45:06.84 ID:I0SDZM+6a.net] Fiber.yield と @var.resume で処理の投げあいをしてるだけ で、resumeは変数のメソッドだから変数が参照できればどこからでも呼べるが、 Fiber.yieldっていうのは、Fiber.new{ ここ }の中でしか呼び出せない なお初心者がFiberを使ったコードを書いても普通にloopで書いたほうがいいもんを煩雑にさせるだけだから今覚えてもすぐ明日から使うぞーってなる機能ではない
28 名前:デフォルトの名無しさん [2021/01/06(水) 14:48:29.93 ID:eEkuR0nA0.net] Ruby使った事ない勢です 知人から恐らくruby(のgem ocra)でコンパイルされたexeファイルを修正してほしいと頼まれたのですが これ逆アセンブルする方法無いですか?
29 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 15:07:09.07 ID:twxSQNJZ0.net] >>28 解凍すればいいだけでは?
30 名前:デフォルトの名無しさん [2021/01/06(水) 18:53:39.35 ID:tXuutWqgd.net] >>29 無知で申し訳ないです サクラエディタでexeとか怪しいtmp開いてみたけど見られないんですよね 解凍というのはどう言うことでしょうか?ocraにそういったコマンドがあるのでしょうか? それとも実はzipでコンパイルされてるとか?
31 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 22:30:29.65 ID:twxSQNJZ0.net] >>30 自己解凍形式 実行すれば一時ディレクトリにソースも解凍されてる
32 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 22:35:40.93 ID:jWwxeiIUr.net] Ractorが今後どうなるか楽しみ
33 名前:デフォルトの名無しさん [2021/01/06(水) 23:02:25.85 ID:eEkuR0nA0.net] >>31 出来ました、ありがとうございます
34 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 23:28:49.12 ID:D4I0bPT10.net] >>20 これにcoverters : :numeric付けてみたけどカンマを含むデータがうまく処理できず >>21 いや、それが知りたいんだが >>23 こうすりゃいいのか。ありがとう
35 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 00:57:12.57 ID:ikfTGx5+0.net] 0 で始まる数値は8進数だから、:numeric ではバグル 012 は、10 になる。 一方、09 は8進数では存在しないから、9 となる require "csv" text = <<'TEXT' "09",1 "012",2 TEXT csv = CSV.new( text ) csv.convert( :numeric ) p csv.read #=> [ [9.0, 1], [10, 2] ]
36 名前:(u_・y) mailto:sage [2021/01/07(木) 02:12:02.37 ID:oTn3YI8va.net] csv=<<-TXT "01.23",1 "09",1 "012",2 TXT a=csv.each_line.map{|n| eval"[#{n}]" } p a
37 名前:デフォルトの名無しさん [2021/01/07(木) 03:01:27.13 ID:BvHUxMcb0.net] >>35 そうそう、これもどうにかしたかった >>36 nullがあるとダメじゃね? >>19 の例が単純すぎたのでもうちょっとマシな例 "0123456789","5CH CO.,LTD","2021/01/01",12345.67 "0123456790","2CH.COM",,0.00
38 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 06:30:45.65 ID:yCgL5kYR0.net] 後出しで条件付け加えてくるのやめろ
39 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 09:59:32.37 ID:d5tQYhLy0.net] つーか、あとは自分でできるやろ。 やりたいようにやれ。
40 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 18:15:56.20 ID:BvHUxMcb0.net] うむ。>>23 で解決した あとはお題として書いてみた
41 名前:(u_・y) [2021/01/07(木) 20:00:34.95 ID:pRSWPdMla.net] 友達いなそう
42 名前:デフォルトの名無しさん [2021/01/11(月) 00:35:09.75 ID:RMa4jLhx0.net] ruby初心者です。 調べたけどわからないので教えて下さい neriでexeファイルを作ろうとすると、簡単なもので試したのですが、 internal:C:/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require': cannot load such file -- Win32API (LoadError) のエラーが出ます。 Windows 10 ruby 3.0 x64 Bat_To_Exe_Converter v3.2
43 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 00:42:06.93 ID:XvdCBu9Er.net] >>42 gem list にWin32APIはあるのか?
44 名前:デフォルトの名無しさん [2021/01/11(月) 09:03:37.19 ID:LZqNfRTHp.net] >>43 gem listでwin32-api(1.9.2 universal-mingw32) はありました。
45 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 11:30:06.64 ID:RwOnRvzI0.net] 「ruby `require': cannot load such file -- Win32API」で検索!
46 名前:デフォルトの名無しさん [2021/01/11(月) 15:49:37.24 ID:NK5j5E+la.net] Win32APIはruby3.0から廃止 当然Win32APIを使ってたgemsはRuby3.0では作者がメンテナンスするまで動かないからneri作者の尻ひっぱたくか前のバージョン使え
47 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 15:52:47.62 ID:Yn+GwDZFM.net] さすがの互換性w
48 名前:デフォルトの名無しさん [2021/01/11(月) 16:04:22.15 ID:KSKcxhht0.net] Windowsに嫌われてるとか言ってたな。
49 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 21:15:58.19 ID:iHOPiDVy0.net] >>47 いや、さすがにWin32APIはしゃあない。 むしろ、とっくに避けていなければならんかったレベル。
50 名前:デフォルトの名無しさん [2021/01/11(月) 22:59:29.10 ID:jE21Oyzwp.net] >>46 なるほど。ありがとうございます。 わからず、ずっと悩んでました。
51 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 04:05:57.95 ID:wRHR1dSL0.net] 環境変数の設定を一切せず rubyの起動オプションですべて明示するというやり方って 現実的になにかトラブルが発生したりしますか?
52 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 04:54:29.71 ID:GWoeC7/l0.net] コマンドラインの長さとか? 最近ならもうだいじょうぶかな?
53 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 08:44:48.38 ID:MPceXAls0.net] そんなに長い指定はないので今の所問題く動いているっぽいです ありがとうございます
54 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 12:19:40.78 ID:joIGd+XG0.net] 教えていただきたいのですが、rubyのclassでそのclassに存在するプロパティ一覧を取得する方法ありますか? 以下の様なクラスを作ってます。 class Data def self.csv_header return 'name,id,data1,data2' end attr_reader :name, :id, :data1, :data2 def initialize(name:, id:, data1:, data2) @name = name @id = id @data1 = data1 @data2 = data2 end def to_csv return "#{@name},#{@id},#{@data1},#{@data2}" end end 要するに、何か複数のデータを持つクラスがあり、それをcsvとして出力したいです。 そのヘッダーを出力する機能をクラスメソッドとして持たせたいのですが、このクラスメソッド(csv_header)の中身を手で書くのではなく、javaで言う所のreflectionか何かを使って出力する方法はありますか? よろしくお願いいたします
55 名前:デフォルトの名無しさん mailto:sage [2021/01/24(日) 22:13:50.30 ID:kU4Polklr.net] >>54 hoge = Data.new('name', id: 0, data1: 1, data2: 2) ivs = hoge.instance_variables ivs.each{|iv| puts "%s => %p" % [iv, hoge.instance_variable_get(iv)]} # => name => "name" id => 0 data1 => 1 data2 => 2
56 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 17:06:01.79 ID:+q31tGtg0.net] 黒魔術・メタプログラミングで、よく見る インスタンス変数用のinstance_variables、 クラス/モジュールには、クラス変数(@@these_things)用のclass_variables
57 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 18:43:13.07 ID:co/Rkwpa0.net] >>54 そういう用途はStruct使うといいんでない? Foo = Struct.new("Foo", :name, :id, :data1, :data2) foo = Foo.new("foo", 1, "123", "456") foo.to_h.keys #=> [:name, :id, :data1, :data2] foo.to_h.keys.to_csv #=> "name,id,data1,data2¥n"
58 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 18:47:31.66 ID:co/Rkwpa0.net] Structは初期化時の引数の数が一致してなくてもエラーにならずにnilがデフォルト値になる それがいやな場合は継承してコンストラクタを上書き class Bar < Struct.new("Bar", :name, :id, :data1, :data2) def initialize(name, id, data1=nil, data2=nil) super end end
59 名前:デフォルトの名無しさん [2021/01/29(金) 04:39:32.60 ID:sK+sAxFfM.net] 質問させてください。 以下のようなデータがあるとして。 data = { "id": "price_xxxxxxx", "object": "price", "active": true, "billing_scheme": "per_unit", "created": 1234567, "currency": "usd", "metadata": { "commission": "2" } } このデータを p data.metadata.commission とすると4が表示されるようにしたいです。 どうやって変換すればいいでしょうか?
60 名前:デフォルトの名無しさん [2021/01/29(金) 04:40:41.40 ID:sK+sAxFfM.net] >>59 すいません、4じゃなくて2でした。。
61 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 13:59:12.19 ID:IOP7xwlv0.net] 普通にブラケットでアクセスするかdigしたほうがいい気がするが どうしてもドットでアクセスしたいなら再帰的にOpenStructに変換する data = JSON.parse(data.to_json, object_class: OpenStruct) data.metadata.commission #=> "2"
62 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 14:31:44.23 ID:MVM9RsSY0.net] ハッシュだから、hash.x.xyz は無理だろ Effective Ruby の項目10 に書いてある、 構造物はハッシュじゃなくて、クラス・Struct を使おうというやつだろ ただ、その都度、構造が変わるものは、ハッシュの方が良いし、 構造がネストしている場合も難しい require "json" json = <<'JSON' { "a": "abc", "x": { "xyz": "2" }} JSON p hash = JSON.parse( json ) #=> {"a"=>"abc", "x"=>{"xyz"=>"2"}} p hash[ "x" ][ "xyz" ] #=> 2
63 名前:デフォルトの名無しさん [2021/01/29(金) 14:57:50.28 ID:sK+sAxFfM.net] >>61 , >>62 ありがとうございます。 背景を書いてませんでしたが、rspec で必要なデータなのです。。 後出しですいません。 なので data.metadata.commission で確認できることが必要なので、Struct(もしくはOpenStruct)で、変換させてみます。
64 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 21:09:33.54 ID:/bfQuQp2r.net] >>59 def hoge!(obj) return unless Hash === obj def obj.method_missing(name, *_) = self[name] obj.each_value{Hash === _1 && hoge!(_1)} end hoge!(data) p data.metadata.commission # => "2" # 冗談だけど
65 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 22:28:17.16 ID:S1/u+juE0.net] >>54 です。 アドバイスありがとうございます。 私も色々と調べたのですが、オブジェクトを1回作らないと難しいかもしれませんね。 仮にデータが全くなかった場合、csvのヘッダーのみ記述されたcsvファイルを出力したいと考えています。 しかし、データが全くないと、オブジェクトが無いため、オブジェクトからプロパティを取得する方法が使えません。 もちろん、ダミーのオブジェクトを作ればOKですが、少々不自然かと思いました。 Structは知らなかったので、勉強させていただきます。 ありがとうございました。
66 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 23:01:53.55 ID:q3Uucr840.net] Struct.membersでいいんじゃないの?
67 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 21:57:18.80 ID:RWoPy8BIa.net] https://twitter.com/yukihiro_matz/status/1358048924141973504?s=20 > 世界一周クルーズの広告が表示され、妻と「コロナ収まったら行きたいね」 世界一周は最低500万、上は数千万にもなる。 うっかり金持ち自慢をしてしまう… (deleted an unsolicited ad)
68 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 15:35:22.83 ID:Ru8WMsS80.net] インストールしなくていい機能縮小版rubyを作って、awkを代替えできるようにする というのはどうでしょう
69 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 19:50:07.01 ID:74skEOdG0.net] >>68 そんな用途なら、互換性が期待できないRubyよりも、信頼できるPerlのほうがええやろ。
70 名前:デフォルトの名無しさん [2021/02/15(月) 00:33:16.20 ID:KKKRaaGF0.net] すまん唐突だけど質問させて eql口頭でってなんで読んだら良いの?
71 名前:デフォルトの名無しさん [2021/02/15(月) 00:34:14.29 ID:KKKRaaGF0.net] ミスった eqlって口頭では何て発音したら良いの? です
72 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 11:38:51.60 ID:adP2s3N/r.net] イコールって読んでる equal?とeql?が入り乱れて使われてるところはしらんが。 まぁrubyしてるならequalとeql両方知ってるはずだし短いイコールの方、とかでも伝わるんじゃ
73 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 13:06:36.01 ID:2czEo7/ia.net] イーキュー イーキューエル イコール
74 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 21:15:47.96 ID:oDLt9usUr.net] イークワル
75 名前:デフォルトの名無しさん [2021/02/16(火) 21:32:31.57 ID:fxt1OOtg0.net] >>72 rubyやり始めたところで、eqlがイコールって気づかなかった。短い方のイコールって良いですね!ありがとうございます。 >>73 自分もイーキューエルだて頭の中で読んでた >>74 なんでやーーー!!
76 名前:デフォルトの名無しさん [2021/02/16(火) 22:13:45.11 ID:fxt1OOtg0.net] すみません、質問です hash生成時に、 str={"key1" = "val1"} ではエラーになる理由を教えてください。
77 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 22:25:37.65 ID:F9q4wvox0.net] p hash = { "a" => "b" } #=> {"a"=>"b"} 全角の{}を使うな。 文字列以外は半角英数字のみ
78 名前:デフォルトの名無しさん [2021/02/16(火) 22:28:16.05 ID:fxt1OOtg0.net] >>77 すみません、携帯からで全角と半角を間違えてしまいました。半角として見てくださいm(_ _)m
79 名前:77 mailto:sage [2021/02/16(火) 23:01:49.84 ID:F9q4wvox0.net] p h_1 = { "a" => "b" } #=> {"a"=>"b"} p h_2 = { "あ": "い" } #=> {:あ=>"い"} p h_3 = { one: 1, "two": "2" } #=> {:one=>1, :two=>"2"} 新しめの書き方では、2, 3 みたいに書ける : を使うと、文字列のキーがシンボルになる "two": が、:two になる one: はシンボルのまま
80 名前:デフォルトの名無しさん [2021/02/16(火) 23:13:47.99 ID:fxt1OOtg0.net] 書いていただいた方法でないと生成できないのですね 丁寧な回答ありがとうございました
81 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 00:25:13.96 ID:p6fAds/B0.net] つーか、なんで「=」でいいと思ったんだか。w
82 名前:デフォルトの名無しさん [2021/02/20(土) 02:27:26.66 ID:SWSWE4Ss0.net] AtCoderの解答見てると、rubyで巨大配列を扱うような時に激遅になりがちな気がする 配列アクセスの遅さなのかループの遅さなのかわからんが
83 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 05:46:26.76 ID:CT8193ch0.net] JIT があるから、1秒間で100万回ループすると、ネイティブコードにコンパイルされて、 1秒間で1,000万回ループできるようになる
84 名前:デフォルトの名無しさん [2021/02/23(火) 21:47:53.55 ID:QIohwxjcM.net] irbにおいて、 def test; p test; end とだけ打ち込みました。 すると、Enumerable.methods.grep(/test/) => [:test] が得られます。 何故、testメソッドが勝手にEnumerableのメソッドになるのか教えていただけないでしょうか。 環境は ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin18] です。
85 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 22:02:57.19 ID:IEGWDKD5r.net] https://docs.ruby-lang.org/ja/latest/class/main.html >トップレベルで定義したメソッドは Object の private インスタンスメソッドとして定義されます。 って思ったけどこっちの環境でもprivateにならないな はて、何故でしょう
86 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 02:17:06.53 ID:hlmSDKs+0.net] バグじゃね?
87 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 02:20:59.00 ID:YN61hHjA0.net] ruby 2.6.6 [x86_64-linux] なら、 def test; p test; end p Enumerable.methods.grep(/test/) #=> [ ]
88 名前:87 mailto:sage [2021/02/24(水) 02:26:45.21 ID:YN61hHjA0.net] p test が文法エラーになるのでは? test という識別子が存在しないから
89 名前:デフォルトの名無しさん [2021/02/24(水) 07:33:53.13 ID:UUqFv7Fhp.net] 0084です。 def test; p test; end ではなく、 def test; p “test”; end でした。 大変申し訳ありませんでした。 ほかのメソッドでも同じような動きを確認しています。今日は立て込んでしまっているので、追って別のメソッドの例も提示します。
90 名前:デフォルトの名無しさん [2021/02/24(水) 07:38:08.91 ID:UUqFv7Fhp.net] >>0085 さん、確認ありがとうございます。 私は初心者なので、以下の認識で正しいか、何か例外があるのか不安でお尋ねしました。認識は正しかったようですので、もう少し調べてみます。 >トップレベルで定義したメソッドは Object の private インスタンスメソッドとして定義されます。
91 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 10:21:05.87 ID:a7gl+o1qM.net] privateかどうかをどうやって確認したの? 要再現コード
92 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 11:26:34.15 ID:9gaCPeun0.net] 環境を作り直したほうがよさそう
93 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 12:25:28.67 ID:hlmSDKs+0.net] ruby 2.6 => [ ] ruby 2.7 => [:test] ruby 3.0 => [ ]
94 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 12:35:04.10 ID:hlmSDKs+0.net] irb(main):001:0> def foo; p "Foo!" end => :foo irb(main):002:0> "abc".foo "Foo!" => "Foo!" irb(main):003:0> 3.14.foo "Foo!" => "Foo!" irb(main):004:0> [].foo "Foo!" => "Foo!"
95 名前:デフォルトの名無しさん [2021/02/24(水) 20:33:38.12 ID:p2P+ZlS6M.net] 90です。 パソコンを再起動して、.irb_historyをtouchで初期化したのち、 以下を実行しても同じ結果でした。 irb(main):001:0> def test; p "test"; end => :test irb(main):002:0> Enumerable.methods.grep(/test/) => [:test] irb(main):010:0> exit $ rbenv -v rbenv 1.1.2 $ rbenv versions system * 2.7.1 (set by /Users/someone/.rbenv/version) 別のメソッドも作ってみましたが、結果は同じでした。 irb(main):001:1* def mul(a,b) irb(main):002:1* a*b irb(main):003:0> end => :mul irb(main):004:0> Enumerable.methods.grep(/mul/) => [:mul] irb(main):006:0> exit $ irb irb(main):001:0> Enumerable.methods.grep(/mul/) => []
96 名前:デフォルトの名無しさん [2021/02/24(水) 20:38:46.87 ID:p2P+ZlS6M.net] 90です。 92さんがおっしゃる通り、環境を作り直すこととします。 私の疑問を受けて、再現性について試していただいた皆様、 ご協力ありがとうございました。
97 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 20:41:24.99 ID:MS8741jMr.net] irb(とpry)でトップレベルで定義するとなんかおかしい $ cat test.rb def hoge; end puts 'public: %p' % [methods.grep(/hoge/)] puts 'private: %p' % [private_methods.grep(/hoge/)] $ ruby -v test.rb ruby 2.6.1p33 (2019-01-30 revision 66950) [x64-mingw32] public: [] private: [:hoge] $ irb irb(main):001:0> load("test.rb") public: [] private: [:hoge] => true irb(main):002:0> def fuga;end => :fuga irb(main):003:0> puts 'public: %p' % [methods.grep(/fuga/)] public: [:fuga] => nil irb(main):004:0> puts 'private: %p' % [private_methods.grep(/fuga/)] private: [] => nil
98 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 21:30:57.42 ID:YN61hHjA0.net] irb, pry は特殊なのかな? 漏れは、VSCode のCode Runner で、 選択したコード片、またはファイル全体を、右クリックメニューから実行してる これが楽
99 名前:デフォルトの名無しさん [2021/02/27(土) 23:10:50.88 ID:xGn+rZN00.net] WEB+DB vol.121 Ruby 3 特集、30 ページ分
100 名前:デフォルトの名無しさん [2021/03/13(土) 14:19:53.90 ID:33EHGK5P0.net] Ruby on Rails 6 の本を書いている、2人の新刊 Go言語 ハンズオン、掌田津耶乃、2021/3/6 Elixir実践ガイド、黒田努、2021/2/5 Ruby からGoか、Elixirか、どっちへ進むべきか? mruby, Rust もあるけど
101 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 00:55:11.21 ID:rggl2LA70.net] Ruby勉強始めたんですが ↓この部分が毎回書きづらいです コード補完とかってないんですか? a.map{|x|x+1}←の|x|の部分