1 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 00:35:29.31 ID:rLZHdQ3Q.net] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお Ruby on RailsについてはWEBプログラミング板で 前スレ Ruby 初心者スレッド Part 61 https://mevius.5ch.net/test/read.cgi/tech/1503644351/ るりまサーチ (リファレンス検索) rurema.clear-code.com/ Rubyist Magazine - るびま jp.rubyist.net/magazine/ 逆引きRuby www.namaraii.com/rubytips/
558 名前:540 mailto:sage [2017/12/24(日) 10:48:40.19 ID:24EH1p52.net] 圧縮された書庫だから、7-Zip Archives から、Ruby 2.4(x64)をダウンロードしたけど、 これはインストーラーとは違うものなのか? rubyinstaller-2.4.3-1-x64.7z というファイル名だったけど 7-Zip Archives の上にある、RubyInstallers から、Ruby 2.4(x64)をダウンロードしてみるわ
559 名前:540 mailto:sage [2017/12/24(日) 11:01:29.86 ID:24EH1p52.net] PowerShell で、7-Zip Archives 中の、\bin\ridk.ps1 version を実行してみた PS C:\Ruby24-x64\bin> .\ridk.ps1 version --- ruby: path: C:/Ruby24-x64 version: 2.4.3 platform: x64-mingw32 ruby_installer: package_version: 2.4.3-1 git_commit: 36aac73 os: Microsoft Windows [Version 10.0.16299.125] やっぱり、これも、RubyInstaller なのかな? よくわからない
560 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 11:02:00.42 ID:A3ERayLu.net] Rubyにパイプラインオペレータってないの? JavaScriptだと exclaim(capitalize(doubleSay("hello"))); というカッコの入れ子が "hello" |> doubleSay |> capitalize |> exclaim; とシェルスクリプトのパイプのように 流れるような形で記述できるようになるらしいんだけど
561 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 11:05:46.33 ID:mMj7aGtc.net] >>545 そんなのがあると誰もオブジェクト指向しなくなるからRubyの思想には合わないだろ 素直にメソッドチェインでやるか、さっさと関数型言語に乗り換えるべき
562 名前:540 mailto:sage [2017/12/24(日) 11:08:13.75 ID:24EH1p52.net] 7-Zip Archives からダウンロードした、Ruby 2.4(x64)は、 ひょっとして、CUI 版のインストーラーなのかな? (rubyinstaller-2.4.3-1-x64.7z というファイル名だった) 7-Zip Archives 中の、\bin\ridk.ps1 に引数を付けて、 インストールするのかも知れない よくわからないけど。 インストーラーじゃないかも知れないし
563 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 11:08:41.37 ID:2eVeUlKQ.net] >>544 >>542 >>545 こんな gem がある yuroyoro.github.io/lambda_driver/
564 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 11:14:59.06 ID:24EH1p52.net] >>545-546 まさに、Elixir Matz も、Streem という新言語を考案して、日経Linux に連載していた。 GitHub にあるらしい
565 名前:540 mailto:sage [2017/12/24(日) 11:29:56.75 ID:24EH1p52.net] 7-Zip Archives から、Ruby 2.4(x64)をダウンロードすると、 rubyinstaller-2.4.3-1-x64.7z というファイル名だった。 これを、7-Zip で解凍すると、56MB になった 56MB もあるし、\bin の中には、ruby.exe, rubyw.exe もある。 実行環境が揃っているような気もする 実はポータブル版で、環境変数PATH を通せば、実行できるのかも知れない よくわからないけど、何か捨てがたいw
566 名前:540 mailto:sage [2017/12/24(日) 11:37:26.57 ID:24EH1p52.net] PowerShell で、7-Zip Archives 中の、\bin\ruby.exe -v を実行してみた PS C:\Ruby24-x64\bin> .\ruby.exe -v ruby 2.4.3p205 (2017-12-14 revision 61247) [x64-mingw32] やっぱり、7-Zip Archives の中にあるやつは、ポータブル版じゃないのか? ひょっとして、実行もできるかも?
567 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 12:51:21.82 ID:W/aeQ+z1.net] 実行できて当たり前なのに何を言っているのか インストーラーはパスを通したりするだけだぞ
568 名前:540 mailto:sage [2017/12/24(日) 13:37:01.71 ID:24EH1p52.net] 7-Zip Archives からダウンロードした、Ruby 2.4(x64)は、 環境変数PATH が通っていないだけで、実行できるの? ここに、実行環境が一式が揃っているの? つまり、どこにでも移動できるポータブル版?
569 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 13:55:33.60 ID:A3ERayLu.net] >>548 期待したけど、やっぱりRubyの文法からは抜け出せないか DSLが得意と言っても所詮Rubyの言語であることに変わりはないしな
570 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 13:58:58.91 ID:A3ERayLu.net] >>546 まあ頭が固いw a + b はオブジェクト指向じゃないっていうんですか? a.add(b) ってしなきゃいけないですね
571 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 14:12:36.12 ID:BNj/0IJ2.net] >>555 Rubyに文句を言う前にまずはRubyの仕様くらいちゃんと理解しよう +は全く特別なところのないごく普通のインスタンスメソッド呼び出しだぞ 関数型でaddにパイプライン使うとしたら b |> add(a) # add(a, b)に相当 こうなるわけだが、理解してるか?
572 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 14:15:02.58 ID:A3ERayLu.net] >>556 まあ君はJavaScriptの仕様を知らなくて当然だろうけどね |> オペレータっていうのは、引数を一つの関数呼び出しの シンタックスシュガーに過ぎない だから関数呼び出しを行ってるのと一緒 関数呼び出しをするとオブジェクト指向にならないのか? そんなわけあるかw
573 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 14:29:26.20 ID:BNj/0IJ2.net] >>557 ある機能が言語に追加されることでコーディングのスタイルが大きく変わってしまうことはよくある。 まあそういう経験則的な話は君には通じなそうだから、もっと具体的にRubyとの相性の悪さを説明してあげよう。 まず、関数型言語やJavaScriptでは裸の関数名は第一級関数(関数オブジェクト)だが、Rubyではメソッド呼び出しになってしまう。 だから>>548 のようにシンボルを使った汚いハックをするか、|>の後にくる識別子は第一級関数として扱うという特別ルールを設けることになる。 特別ルールを設けたとしても、>>556 のaddの例みたいな使い方には対応できない。 君は関数型言語を知らないみたいだから説明しとくと、add(a)はadd関数の第一引数にaを部分適用(カリー化)した引数一個の関数を返す。 |>の直後には必ず関数名が来るというルールだと、これは実現できないのはわかるよね。
574 名前:558 mailto:sage [2017/12/24(日) 14:33:34.04 ID:BNj/0IJ2.net] それと、Rubyの関数は殆どがインスタンスメソッドであるというのも忘れてはいけない。 x |> y.hoge これは y.hoge(x) と解釈すべきだろうか? それともy.hoge()(x)かな? 今のRubyの仕様からすると後者が自然だと思わない?
575 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 14:46:41.85 ID:bBhW4Y9m.net] ようお前ら。 Ruby 2.5が来るのは明日だぞ。 gem作ってる奴はちゃんと準備出来てるか? Ruby2.5にした途端に泣きを見ることのないようにしとけよ。
576 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 15:29:04.65 ID:A3ERayLu.net] >>558 あ、なるほどw シンタックスシュガーって言ってるのに、 あんたは関数型の仕様に変更すると思い込んでるわけかw 俺、Rubyを関数型にしろなんて一言も言ってないよ? JavaScriptが関数型になったなんて一言も言ってないよ? ただ、関数呼び出しのネストは見づらいから、一つの引数を取る関数の呼び出しを |> でつなげた "書き方" ができると良いねって話しかしてないんだよ > 今のRubyの仕様からすると後者が自然だと思わない? 理由が書いてないから判断不可能だね >>556 > 関数型でaddにパイプライン使うとしたら > b |> add(a) # add(a, b)に相当 > こうなるわけだが、理解してるか? ぷぷw |> という記号を使っだけで、関数型になるべきだなんて 思い込んでるからそういう結論になる。馬鹿だねぇ JavaScriptの関数型でない単なるパイプラインオペレータは引数が1つの 関数を受け取ることしかできない。 カリー化?そんなものはしない。 関数型のパイプラインオペレータを導入なんて話はしてないんだから当然の結論 引数が複数の関数を使いたければ、アロー関数でそうなるように書くだけの話 https://github.com/tc39/proposal-pipeline-operator let newScore = person.score |> double |> (_ => add(7, _)) # アンダースコアは只の変数、iでもaでも良い papp proposalのpappメソッドを使うとこう書くこともできるようだけど let newScore = person.score |> double |> add.papp(7)
577 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 15:52:11.56 ID:2eVeUlKQ.net] >>554 Ruby使うんだから当たり前の話でそ? Rubyじゃないスタイルでどうしても書きたいならすでにRubyを使う必要はないと思うんだけど
578 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 15:54:48.61 ID:/VeWYwOF.net] Juliaおぬぬめ
579 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 16:00:56.08 ID:2eVeUlKQ.net] Juliaいいね。これから大注目の言語だよ ただ、現状は起動が激重なのでJuliacとかが公式採用されないとつらいかも そういう意味ではJavaに似てるのかも(言語仕様という意味ではなく)
580 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 16:12:39.10 ID:BNj/0IJ2.net] Juliaはクソ重い計算やデータの処理を長時間ぶっ通しで動かすための言語だよ Rubyと比べるようなもんではないし、起動時間が問題になるようなものに使うのも間違い
581 名前:デフォルトの名無しさん [2017/12/24(日) 20:04:37.70 ID:4g6ysjQ5.net] >>545 >流れるような形で記述できるようになるらしいんだけど できるようになるといふのは、以下の提案かな? ・ESNext Proposal: The Pipeline Operator https://github.com/tc39/proposal-pipeline-operator 調べてみると、これはあくまで提案(proposal)であって、 5段階あるECMAScript(= JavaScript)仕様策定過程の2番目に過ぎない 0. Strawman 1. Proposal <― パイプライン演算子の状態 2. Draft 3. Candidate 4. Finished 当然、現時点でその実装は存在しておらず「絵に描いた餅」に過ぎない 言い換えると、「こんなのできたらいいなあ」といふ話だよね?
582 名前:デフォルトの名無しさん [2017/12/24(日) 20:35:54.14 ID:4g6ysjQ5.net] >>561 >関数型のパイプラインオペレータを導入なんて話はしてないんだから当然の結論 え、こう書けないっていうの? let newScore = person.score |> double |> add(7) もし pipeline proposal が Finished(採用決定)になったとしても、このコードを let newScore = person.score |> double |> (_ => add(7, _)) こうも冗長に書かなけりゃならないなんて、ダサイというか中途半端な提案だと思う >>554 の言
583 名前:tを借りると: 期待したけど、やっぱりJavaScriptの文法からは抜け出せないか 新しい提案と言っても所詮JavaScriptの言語であることに変わりはないしな っていう感想です しかも更にpapp proposal(部分適用サポートの提案)がFinishedになったと仮定してもなお let newScore = person.score |> double |> add.papp(7) こうなっちゃうなんて、もう少し練り直してから提案した方がいいと思うんだけどなぁ [] [ここ壊れてます]
584 名前:540 mailto:sage [2017/12/24(日) 22:02:54.10 ID:24EH1p52.net] JS は、Ruby, Elixir の影響が強い。 Kotlin も、Groovy, Ruby の影響が強い 誰か、 >>540 の、7-Zip Archives の所からダウンロードした、 Ruby 2.4(x64)をどうすれば
585 名前:よいのか、教えてほしい [] [ここ壊れてます]
586 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 22:25:11.95 ID:ZqTzsWSR.net] >>568 パスを通せ
587 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 23:05:16.75 ID:A3ERayLu.net] >>567 > え、こう書けないっていうの? 少しは頭を働かせようよw そこにある、add(7) が引数を一つ取る関数を返すなら書けるよ それを汎用化したのがpapp。それにJavaScriptでカリー化する方法だってある JavaScriptは関数型言語じゃないんだから、関数型言語の方からみて ダサいとか言うなよw お前、関数型に洗脳されてるだろw 関数型を取り入れたなんて話はしてない。お前が言い出しただけ。 単にパイプラインオペレータという関数のネストを見やすくする機能を 追加するってだけの話
588 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 23:07:29.50 ID:2eVeUlKQ.net] >>570 Rubyについてはこんな書き方しかできないのかと毒づいておいて、JavaScripitについては全力擁護 これをRubyスレでやらかしてたら荒らし認定を食らってもしょうがないレベルだぞ
589 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 23:12:18.94 ID:A3ERayLu.net] >>566 > 当然、現時点でその実装は存在しておらず「絵に描いた餅」に過ぎない 知らないなら、知ったかぶりして語らないでよw JavaScriptは5段階あるECMAScript(= JavaScript)仕様策定過程を 必ず0から一つづつ上げて行かないといけない だからどんな仕様だって最初は0から始まる こういう提案から仕様化されるまでのプロセスが明確になってるのは素晴らしいことだよ で、Stage 1だが https://azu.github.io/slide-what-is-ecmascript/slide/12.html ・プロポーザルの目的や解決方法を示す ・Polyfillやデモ等を用いて解説する どういうことかというとPolyfillやデモ等があるってことだ。 わかりやすく言うと、すでに使う方法があるってことだ。それがこれ https://www.npmjs.com/package/babel-plugin-transform-pipeline なので絵に描いた餅ではない。絵に描いた餅はStage 0 その0を脱却して、すでに使う方法が出来たということ
590 名前:540 mailto:sage [2017/12/24(日) 23:16:34.36 ID:24EH1p52.net] 7-Zip Archives の所からダウンロードした、Ruby 2.4(x64)を解凍し、 C:\Ruby24-x64 に改名して、 Windows10 で、ユーザー環境変数に、C:\Ruby24-x64\bin を追加したら、 PowerShell で、ruby コマンドが使えるようになった PS C:\Users\Owner\Documents\Ruby> ruby -v ruby 2.4.3p205 (2017-12-14 revision 61247) [x64-mingw32] C:\Ruby24-x64\bin には、erb, gem, irb, rake, ruby.exe, rubyw.exe などのコマンドがあるから、 7-Zip Archives の所にあるものも、Rubyのポータブル版の実行環境なのかも
591 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 23:17:27.23 ID:2eVeUlKQ.net] >>572 でさ、結局何が言いたいの? JavaScriptサイコーってのが言いたいのなら完全にスレ違いだよ
592 名前:540 mailto:sage [2017/12/24(日) 23:23:27.95 ID:24EH1p52.net] ちなみに、rubyinstaller の 7-Zip Archives の所からダウンロードした、 Ruby 2.4(x64)は9MB で、解凍すると56MB になった 1/6 に圧縮されている
593 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 23:37:20.25 ID:A3ERayLu.net] >>574 > でさ、結局何が言いたいの? Rubyもサイコーになろうぜ
594 名前:デフォルトの名無しさん [2017/12/25(月) 00:01:06.18 ID:h6gXOlbY.net] >>570 >関数型を取り入れたなんて話はしてない。お前が言い出しただけ。 >>556 とは別人だけど、IDを確認できないほど冷静さを失っているのかな? また、そもそも>>545 の exclaim, capitalize, doubleSay という関数単位で部品化して パイプライン演算子で組み立てるという発想そのものが関数型プログラミングであり、 それを自分(ID:A3ERayLu )から言いだしたという認識ができていないのかね? >単にパイプラインオペレータという関数のネストを見やすくする機能を追加するってだけの話 だよね、関数型のパイプライン演算子と同じ名前だけど中身は微妙に異なるJavaScript固有の方言が 一つ提案されたという、ただそれだけの話 しかも最終的に採用されるか否かも確定すらしていない Proposal 段階でしかないといふ
595 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 00:21:34.94 ID:mSK8fdnz.net] > また、そもそも>>545 の exclaim, capitalize, doubleSay という関数単位で部品化して > パイプライン演算子で組み立てるという発想そのものが関数型プログラミングであり、 関数呼び出しの形を変えただけ、 関数型プログラミングとは全く関係ない
596 名前:デフォルトの名無しさん [2017/12/25(月) 00:25:59.73 ID:h6gXOlbY.net] >>576 関数型言語のパイプライン演算子がサイコーという話なら同意するし、 それがオブジェクト志向言語であるRubyにとって今すぐ必要かどうかは別
597 名前:にして、 数ある将来のRuby構想に向けた提案の一つとして理解したい でも >>561 ,570で自身(ID:A3ERayLu)が語っているように、 JavaScriptのそれは関数型ではないJavaScript固有の方言なんだろ? JavaScriptが独自の道に進もうとしてるなら「どうぞお好きになさいませ」だし、 それにRubyも従うべきという話に至っては「何を考えてるの?」としか言えないね >>570 >単にパイプラインオペレータという関数のネストを見やすくする機能を >追加するってだけの話 どちらかというと日常的にカッコだらけになるのはPythonだから、 そちらへ提案した方がいいんではないかな http://mevius.2ch.net/test/read.cgi/tech/1491491123/44-46 関数型プログラミングを公式文書で否定しているPythonだから、 関数型ではないパイプライン演算子の提案はきっと喜ばれるよ [] [ここ壊れてます]
598 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 00:38:42.38 ID:W15ZQhn0.net] いずれにせよ>>559 のようにメソッド呼出の括弧省略の問題があるからJavaScriptやCaml系のようなクリーンなシンタックスにはならないけどね &:symbolとか->みたいなハック感溢れる醜い構文になる
599 名前:デフォルトの名無しさん [2017/12/25(月) 01:02:31.40 ID:h6gXOlbY.net] >>580 いや、オブジェクト指向言語のRubyなら、現時点でも 簡潔にメソッドチェーンで流れるようなコードが書ける 以下は>>545 の例: https://ideone.com/aExbWe refinements に関しては以下の記事が分かりやすかったのでご参考 ・Ruby の refinements の使い途 - Qiita https://qiita.com/scivola/items/dc49d56c90fd0cb6d4d3 で、何かご不満はございますか?
600 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 01:03:23.68 ID:mSK8fdnz.net] >>579 JavaScriptは元から関数型じゃないし 関数型になんかなろうとしてないよw
601 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 01:05:56.92 ID:mSK8fdnz.net] >>581 > で、何かご不満はございますか? はい。 def foo(i); end def bar(i); end def baz(i); end となっているものの baz(bar(foo(1)) という呼び出しを メソッドチェーンで繋げないということです。 パイプラインオペレータならこの通り 1 |> foo |> bar |> baz
602 名前:デフォルトの名無しさん [2017/12/25(月) 01:53:39.67 ID:h6gXOlbY.net] >>582 >JavaScriptは元から関数型じゃないし うーみゅ、やっぱりJavaScriptって誤解されてるのね ・クロージャって何がいいの? mevius.2ch.net/test/read.cgi/tech/1415419907/224 リンク切れ邦訳版「JavaScriptの勉強:世界で最も誤解されたプログラミング言語」 web.archive.org/web/20130120204931/http://d.hatena.ne.jp/brazil/20050829/1125321936 > Cの皮を被ったLisp > > JavaScriptには、Cのような中括弧や不格好なforステートメントがあるため、 > 一般的な手続き型言語のように見えますが、それは誤りです。JavaScriptはCやJavaよりも、 > LispやSchemeのような関数型言語と多くの共通点を持っているのです。JavaScriptには、 > リストの代わりに配列があり、プロパティリストの代わりにオブジェクトがあります。 > 関数はファーストクラスであり、クロージャも備えています。つまり括弧の対応をとる手間なしに、 > ラムダを利用できるのです。 >>583 それに関しては納得 前スレで書いたように、Rubyにおいてメソッドは一級市民(ファーストクラス)ではありませんからね ・Ruby 初心者スレッド Part 61 mevius.2ch.net/test/read.cgi/tech/1503644351/210
603 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 01:57:26.36 ID:6htjEWah.net] ここはJavaScriptスレじゃないよ
604 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 02:12:49.73 ID:mSK8fdnz.net] >>585 JavaScriptは関数型だってことにしたいんでしょw
605 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 02:14:31.41 ID:6htjEWah.net] >>586 JavaScriptの話はそっちのスレでやれってこと
606 名前:デフォルトの名無しさん [2017/12/25(月) 02:19:08.95 ID:h6gXOlbY.net] >>585 まったくそのとおりですね といふことで、JavaSciptのパイプライン演算子を提案され
607 名前:トいる方は、 JSスレヘお帰りになられるか、もしくわ 日常的にカッコだらけになってしまうPython(>>579 ) スレへ移動されるよう希望します 特にRubyと違ってPythonは関数が一級市民ですから、 JavaScriptの手法を適用するのは(Rubyよりも)容易でしょう [] [ここ壊れてます]
608 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 10:22:56.25 ID:yHCsyXBb.net] Windows10 の、VS Code で、irb (PowerShell ターミナル)を起動して、 put "abc" なら、実行できるけど、 put "あいう" のように日本語があると、実行できないね
609 名前:589 mailto:sage [2017/12/25(月) 10:27:56.95 ID:yHCsyXBb.net] put "abc" # あ のように、コメントに日本語がある時は、実行できる
610 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 10:29:17.76 ID:FXcNW9u1.net] >>589 それはrubyじゃなくてlibeditの不具合だよ
611 名前:589 mailto:sage [2017/12/25(月) 12:11:57.01 ID:yHCsyXBb.net] 知らないけど、UI 部分を、C言語とかで作っているから、 いつまで経っても修正できないのだろう UI 部分は、VS Code みたいに、 ブラウザ技術を使っている、Electron で作れば良かった
612 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 20:14:59.36 ID:YHWK2l8N.net] ねんがんのRuby 2.5.0をてにいれたぞ‼ https://www.ruby-lang.org/ja/news/2017/12/25/ruby-2-5-0-released/
613 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 21:16:04.65 ID:FXcNW9u1.net] yield_selfは使いどころが結構ありそうだね
614 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 21:25:14.33 ID:s8SRCdHD.net] 使い方わかんないな
615 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 21:52:41.67 ID:YHWK2l8N.net] yield_selfはこれまでメソッドチェーンをしたくてもできなかった場合で活躍するね 途中の一時変数は用無しになった
616 名前:デフォルトの名無しさん [2017/12/25(月) 22:38:48.18 ID:h6gXOlbY.net] 昨日のパイプライン演算子に関する話の中に出てきた >>583 のようなケースが 以下のように書けるようになる https://ideone.com/hZI7wT ・Ruby 2.5 の yield_self - Qiita https://qiita.com/stomk/items/58dce3e5e294639ab1c9 F# や Elixir の登場ですっかり世間の認知度がアップしたパイプライン演算子、 すっかりハマって 「プログラミングスタイルをパイプライン形式(いわゆるメソッドチェーン)で統一して書きたい!」 という欲求を抑えられない人たちにとっては嬉しいメソッドの新設ではないかと思われ 個人的には、メソッド名は apply もしくはそれを短くした app が 感覚的に合っていた(エイリアスを定義するだけなんだけどね)
617 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 22:46:27.01 ID:mSK8fdnz.net] ふっふっふ、ようやく気づいたかね? 昨日のパイプライン演算子の話は ここにつながるのだよ
618 名前:デフォルトの名無しさん [2017/12/25(月) 23:07:16.77 ID:h6gXOlbY.net] つまり: ・JavaScriptでは現時点だと最終的に採用されるか否かも定かでない Proposal 段階で、 実験的な実装をいじってあーだこーだ議論している真っ最中 ・一方、Rubyではとっくに議論を終えて公式にリリースを終えてしまった といふ話ですね
619 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 23:20:17.82 ID:YHWK2l8N.net] ちょっと面白い発見 ppを使うのにrequire要らずだってあったから試してみたけど、 使った最初に自動でrequireするようになってる $ ruby25 --disable-gems -e 'puts $"' enumerator.so thread.rb rational.so complex.so /usr/local/lib/ruby/2.5/amd64-freebsd11/enc/encdb.so /usr/local/lib/ruby/2.5/amd64-freebsd11/enc/trans/transdb.so $ ruby25 --disable-gems -e 'pp $"' ["enumerator.so", "thread.rb", "rational.so", "complex.so", "/usr/local/lib/ruby/2.5/amd64-freebsd11/enc/encdb.so", "/usr/local/lib/ruby/2.5/amd64-freebsd11/enc/trans/transdb.so", "/usr/local/lib/ruby/2.5/prettyprint.rb", "/usr/local/lib/ruby/2.5/pp.rb"]
620 名前:デフォルトの名無しさん mailto:sage [2017/12/26(火) 14:56:29.62 ID:75dqQ4yg.net] private methodを定義する時ってどう書くのが普通? private def foo __bar end def foo __ bar end private :foo # クラスの後ろにまとめて定義 private def foo __bar end
621 名前:デフォルトの名無しさん [2017/12/26(火) 16:40:03.50 ID:pHnCZ49/.net] 自分の好きなタイミングで
622 名前:デフォルトの名無しさん mailto:sage [2017/12/26(火) 17:17:14.64 ID:MQU8AiWM.net] 他人が読んで読みやすいとと思う書き方。
623 名前:デフォルトの名無しさん mailto:sage [2017/12/26(火) 17:36:54.63 ID:Zhknjblq.net] 俺は後ろにまとめて書くようにしてる。 ついでに言うとprivateが連続した場合2個目以降のprivateは不要だが、パッと見て分かるように常に付けている。 最近は触って欲しくないメソッドはリファインメントを使うっていう手法を覚えたけど、これは異端なのか分からない。
624 名前:デフォルトの名無しさん [2017/12/26(火) 22:52:56.50 ID:pHnCZ49/.net] アンチ息してる? アンチスレ死亡してるみたいだけど
625 名前:デフォルトの名無しさん mailto:sage [2017/12/26(火) 23:11:59.17 ID:Xx1508gc.net] アンチスレ死亡させていいよ 存在価値無いし、ここで十分
626 名前:デフォルトの名無しさん mailto:sage [2017/12/26(火) 23:45:46.61 ID:p5HaZQjy.net] そもそもRubyのprivateって実質的な強制力はほぼゼロでコメントとしての意味くらいしかないからな そういう意味ではよほど小さなクラスを除けば全部に付けないとあまり意味ないんじゃないか
627 名前:デフォルトの名無しさん mailto:sage [2017/12/27(水) 01:21:36.89 ID:kb3Qecdj.net] アンチがアンチスレの存在をすっごい嫌がってるのは、本スレで暴れたいからだろうな だが、断る アンチはあの過疎ったアンチスレへ帰るべきだ
628 名前:デフォルトの名無しさん mailto:sage [2017/12/27(水) 01:24:11.45 ID:Kn/lt9VX.net] 結局ここにアンチが来てなくても アンチの話題をしたいわけなんだよな もう病気だと思うよw
629 名前:デフォルトの名無しさん mailto:sage [2017/12/27(水) 01:24:47.07 ID:Kn/lt9VX.net] アンチスレも定期的に見てるようだし
630 名前:589 mailto:sage [2017/12/27(水) 01:58:58.62 ID:u0gTyM9V.net] >>589-592 自己レス irb -E CP932 irb の起動時に、オプションを付けると、日本語文字列も正常になった puts "あ" Ruby は、Windows でも無敵やな!
631 名前:デフォルトの名無しさん [2017/12/27(水) 04:54:44.27 ID:vGbq0nNV.net] >>601 人それぞれでいいと思うけど、自分はクラスの後ろにまとめて定義する派だね ドキュメンテーションとしての可読性を重視し、あるクラス定義において デフォは公開したいメソッドだけどキーワード private で宣言した以降の セクションは非公開にしたいという意図がある class Klass 公開したいメソッドの定義セクション private 不公開なメソッドの定義セクション end 個別に宣言する private :foo を使うケースは、公開するつもりでクラスを設計したけど、 リファクタリングの過程で「このメソッドは非公開でもいいんじゃね?」と疑問を感じたら private :foo を付けテストを流して実験するといった一時的なもの >>607 確かに、メンバ変数のアクセス制限という概念が無く、全ての変数がpublicとして扱われるのよね https://qiita.com/nkennek/items/8c54365cb873cca8730a woodyring.blog.so-net.ne.jp/2013-05-25-1 ああ中途半端でめんどくさ
632 名前:デフォルトの名無しさん mailto:sage [2017/12/27(水) 14:38:59.95 ID:kb3Qecdj.net] 612は勘違いしてる 変数にpublicも糞も無い
633 名前:デフォルトの名無しさん mailto:sage [2017/12/27(水) 14:47:08.38 ID:K4eQH++r.net] メンバ変数なんてない インスタンス変数の事を言ってるならそもそもオブジェクトの外からはアクセスできない
634 名前:デフォルトの名無しさん [2017/12/28(木) 23:13:58.27 ID:zlcR2/4C.net] みんな、デバッグはpで済ましてる? それとも何かツール使ってる?
635 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 23:14:30.42 ID:AeGE7eie.net] は? ppだろ
636 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 23:18:20.87 ID:s+AqweGp.net] 自前でpryもどきを作ってbinding.hogeしてる
637 名前:デフォルトの名無しさん mailto:sage [2017/12/29(金) 02:26:20.85 ID:orHgNMeq.net] awesome-print/awesome_print: Pretty print your Ruby objects with style -- in full color and with proper indentation https://github.com/awesome-print/awesome_print
638 名前:デフォルトの名無しさん [2017/12/30(土) 03:43:26.25 ID:Codmlyj+.net] 最近、debug.rb知って使うようになったけど pで間に合うデバッギングしかまだやってないんだよな
639 名前:540 mailto:sage [2017/12/30(土) 08:54:20.80 ID:M2I24uN0.net] RubyInstallers の、7-Zip Archives の所からダウンロードした、 Ruby 2.4(x64)は、Rubyのポータブル版の実行環境だった。 Ruby 2.4(x64)は9MB で、解凍すると56MB になった これだけでも、ファイルI/O など、結構遊べる デフォルトで、erb, irb, minitest, sinatra などが入っている。 RSpec は入っていないけど 先に、bundler gem を入れて、 VS Code の画面で、Ruby Solargraph という拡張機能を入れると、 solargraph gem がインストールされるので、VS Code で補完ができる VS Code で、Ruby のデバック用の拡張機能を入れようとすると、 Windows のネイティブコードにコンパイルする必要があるから、 The MSYS2 DevKit を入れる必要がある。 これが、1.7GB もあるらしいので、入れない方が良い 1行ずつデバッグせず、p などで表示しながら作るのが良い MSYS2 DevKit を入れない範囲で、プログラミングするのが簡単
640 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 13:51:43.29 ID:KgXg1sy3.net] JSON::Stateの挙動がマニュアルと違うのですがこれはバグでしょうか https://ideone.com/Nd2wBc https://docs.ruby-lang.org/en/2.4.0/JSON.html
641 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 14:02:41.65 ID:8kEk1hAU.net] あぁ、バグだろうな。 お前のバグだ
642 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 15:07:11.63 ID:KgXg1sy3.net] 英語が読めなかったんですね。すみませんでした マニュアルには「コロンとコンマの区切りの後にspace:で指定した文字列がおかれる」と書いてあります
643 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 15:21:25.29 ID:9j+d+4sf.net] space_before: だろ
644 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 15:22:43.33 ID:KgXg1sy3.net] space_beforeはコロンの直前なので関係ありません
645 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 15:25:29.81 ID:9j+d+4sf.net] リストだからじゃね
646 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 17:05:16.47 ID:20iing1R.net] 何しても`,'の後ろには入らないね バグっていうよりマニュアルの不備なのかな
647 名前:デフォルトの名無しさん mailto:sage [2017/12/30(土) 17:25:46.52 ID:IKvN98q1.net] ,の後ろにスペース入れるのは一般的なフォーマットだから、常識的にはドキュメントの方が正しいでしょ 直してプルリク出せ
648 名前:デフォルトの名無しさん [2018/01/02(火) 13:03:30.40 ID:nZWiMujw.net] 明けおめ 今年初のRubyスレ書き込み
649 名前:デフォルトの名無しさん mailto:sage [2018/01/02(火) 22:10:18.61 ID:Q+9WD3Xu.net] 新年からRailsを勉強中。環境はwin64 <%= csrf_meta_tags %> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'default', 'data-turbolinks-track': 'reload' %> </head> さっきから、こいつに対してExecJS::ProgramError hogehoge#indexってエラーを吐いてばかり coffee-scciptも1.8.0にしてもさっぱり解決せず。libv8とtherubyracerを入れろとか書いてるけど、 さっきから2時間以上苦戦してるが、全くインストールできずエラーばっかり 何なんだこれ
650 名前:デフォルトの名無しさん mailto:sage [2018/01/02(火) 22:12:28.67 ID:Q+9WD3Xu.net] 違った、viewの中身はこいつだ <!DOCTYPE html> <html> <head> <title>hogehoge</title> <%= csrf_meta_tags %> <%= stylesheet_link_tag "application", media:"all", "data-turbolinks-track"=> true %> <%= javascript_include_tag "application", "data-turbolinks-track" => true %> </head> <body> <%= yield %> </body> </html>
651 名前:デフォルトの名無しさん mailto:sage [2018/01/02(火) 22:13:36.50 ID:NRmrCA2E.net] 今時WinでやるならWSLを使おう どうせ運用はLinuxなんだからそれに慣れる意味でもな あと、オワコンCoffeeなんか今更使っちゃダメ
652 名前:デフォルトの名無しさん mailto:sage [2018/01/02(火) 22:30:29.29 ID:Q+9WD3Xu.net] タイトルでそう思ったけど、ここ初心者スレじゃなかったのか 仕方ない、自分でもうしばらく足掻くか
653 名前:デフォルトの名無しさん mailto:sage [2018/01/02(火) 22:32:05.53 ID:ZaEks4dH.net] WSL使おうってアドバイスがあるのにさらっと無視するようじゃ、初心者スレ云々の問題じゃないかと思われる
654 名前:デフォルトの名無しさん mailto:sage [2018/01/02(火) 22:37:12.02 ID:IA96dLm2.net] すべてのwindowsでWSL使えるわけじゃないのに何言ってるの
655 名前:デフォルトの名無しさん mailto:sage [2018/01/02(火) 22:42:47.77 ID:ZaEks4dH.net] だったらWSL使えないって言えよ そしたらVMWare使えってアドバイスもらえるんだからさ
656 名前:デフォルトの名無しさん mailto:sage [2018/01/02(火) 22:44:20.68 ID:IA96dLm2.net] 答えのわからない質問に、的はずれな回答しなくていいから わからないなら黙ってなさい
657 名前:デフォルトの名無しさん mailto:sage [2018/01/03(水) 00:44:42.35 ID:0mS9Giqv.net] 原因わかったよ、鋸使わなかったから 鋸使ったらうまくいった あとで調べたらWSLは互換性がどうたらとか書いてたし、VM使うほど容量に余裕ないんで でもまあwindowsよりLinux使えってのが大きなヒントになったのは確か
658 名前:デフォルトの名無しさん mailto:sage [2018/01/03(水) 00:53:49.79 ID:BK81yZAH.net] 互換性はWSLの方が遥かにマシだぞ WinのRubyなんか動いたらラッキーレベルのおまけ