Ruby 初心者スレッド Part 62
■ このスレッドは過去ログ倉庫に格納されています
プログラミング言語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/ そう。それもあるね。
動くか、動いてないかの二択じゃないか?って
思うかもしれないがぜんぜん違う。
動いてない状態というのは一つしかないが、
動いている状態というのは無限に近い数ある
「0」と「0以上」の違いと同じ
動いてないという一つの状態なら、全部を調べることも可能だが、
動いているという無限にある状態は、調べ上げることは不可能 >>498
Rubyの箇所をJavaScriptやPythonといった他の動的型付け言語へ
改変しても当てはまる事柄しか語っていないと指摘しているんだよ
以下 >>506-509 まで、Rubyには限定されないありふれた一般論が続く
>>501
つまり、そうゆうこと
>>511
>Rubyって、静的なクラス定義というのがそもそも存在しないんだよ
これも「動的型付け言語って、静的なクラス定義というのがそもそも存在しない」という話だね
Rubyに限らずJavaScriptやPythonといった他の動的型付け言語であれば、
「クラスなんてものは動かしてみるまで無い」のが動的型付けの原理だよ 「クラスなんてものは動かしてみるまで無い」かもしれないが、
「仕様(やりたいこと)は動かしてみなくてもある」
ソースコードは動かさなくても「そのクラスは○○であること」
(○○にはメソッドが有ることとかはいります)を前提に
書いてあるというのに「動かしてみるまで無い」ことに意味があるのだろうか >>513がRailsを触ったことがないのはわかった >>514
反論して良いんだよ?
Railsがなんだって?
普通はデータベースにそのフィールドが
有るという前提でコード書くよね? >>515
それをどうやって実行前に認識するの?
DBのスキーマをクエリして調べるのか?w >>516
DBのスキーマを実行時に変えたりすることなんてまず無いだろ
実行前にスキーマは決まってる。
ならクラスも実行前に生成することは可能なわけだが?
Railsが実行後に決めているからと言って、実行時に決まることにはならない
スキーマは実行前に決まっているし、今話してるソースコードだって
そのフィールドが存在するという前提のソースコードを書いてるだろ
動的に生成してるその情報は、本当は実行前に決まってるんやで? 可能かどうかとやるかどうかは別問題だろう
それRuby3の型検査の仕様として提案してみろ、このスレどころではなく罵倒と嘲笑の的だぞ >>518
これのどこが型検査の仕様なんだ?
そりゃ馬鹿にされるだろうな
型検査の仕様だと言ったお前が 動的言語といっても本当に動的に決まることはほとんどなく
静的に決まってる情報を元に動的に作ってるだけなんだよな。
だから実行するたびに毎回同じものが作られる。
毎回同じものを作るなら、キャッシュするかのように
最初から作っておけば良いわけさ >>519
DBスキーマまで考慮したメタプログラミング対応の静的解析ツールを作るってこと?
実用的なものができると本気で思うなら作ればいいんじゃね?
みんな喜ぶし、そんな実績があればそれこそMRIの主要メンバーとしてRuby3の仕様決定を主導できるぞ
頑張れよ >>521
だから動的言語の仕様じゃ無理だって話してるじゃんw
ソースコードにクラスという型を書いてあるから多くのリファクタリングが簡単に出来るようになる
静的に決まってるならソースコードに静的に書けるわけで、
静的に書いておけば、リファクタリングが簡単に早くできるって話をしてる >>522
だからそれはRubyだけでなくJavaScriptやPythonを含む
大半の「動的型付け言語じゃ無理だ」っていう当たり前の話だろ? >>522のその論理はもういいよw
食いたくないのに食わされてお腹いっぱいっすわ リファクタリングはシンプルにしていくのが目的なのに、話を小難しく複雑にしたいのはなぜだ
>>512 とか。
動的言語うんぬんゆってるやつから不吉な匂いがする >>526
リファクタリングは、シンプルにしていくのが目的
だから、話を小難しく複雑したくない?
シンプルにしたいのはリファクタリングであって
「話」の話は関係ないよ このスレはいっつも議論してんなぁ
みんな日中は何してる人なの? 普通に仕事してるよ。
だから平日の日中は書き込めない Rspecで下みたいな書き方ってあり?
それとも避けられる?
# def f n
# n + n
# end
context 'fの引数が0から255のとき' do
??256.times do |i|
????it { expect( f(i) ).to eq (2 * i) }
??end
end >>531
テストの一般論で言えばダメ
それ結局同じことを実装とテスト両方に書いてるだけで、テストとして意味をなしてない
テストは入出力ともどんな低脳か見ても間違えようのない具体的な値を書くのが鉄則 >>532
じゃあもし0から255まで全部パスするか書きたいときは
it { expect( f(0) ).to eq (0) }
it { expect( f(1) ).to eq (2) }
...
ってズラっと列挙しろってこと? あと、「nの2倍を返す」という観点と「入力は0から255まで」という観点がごっちゃになってるのも良くない
この場合、前者を代表値(5とか)でテストして、それに加えて後者の観点で境界値(0と255)を試すくらいでいいと思うよ
代表値は冗長かもしれないけど前者の観点をわかりやすく表現するという意味では価値はある >>534
なるほど、どうもありがとう
代表値、境界値(+不正な値)を試すくらいでいいんだね 荒らしがハッスるしとる
やっぱアンチも人のいないアンチスレより人の多い本スレに来てしゃべりたいのか
かわいそう あ、いや、いままでとちょっと違うことを書き込もうと思ったけど
ID変わってたかなーって思っただけ
変わってなかったので違う話はしないよw
あと他のスレには行かないと何度もいってる
あきらメロン https://rubyinstaller.org/downloads/
Windows10 に、Ruby を入れようと、
上のページの、7-Zip Archives から、Ruby 2.4(x64)をダウンロードすると、
rubyinstaller-2.4.3-1-x64.7z というファイル名だった。
これを、7-Zip で解凍すると、56MB になった
C:\Ruby24-x64\
とフォルダ名を変えたけど、ここからどうやってインストールするの?
それとも、これはインストーラーではないのかな? 圧縮された書庫だから、7-Zip Archives から、Ruby 2.4(x64)をダウンロードしたけど、
これはインストーラーとは違うものなのか?
rubyinstaller-2.4.3-1-x64.7z というファイル名だったけど
7-Zip Archives の上にある、RubyInstallers から、Ruby 2.4(x64)をダウンロードしてみるわ 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 なのかな?
よくわからない Rubyにパイプラインオペレータってないの?
JavaScriptだと
exclaim(capitalize(doubleSay("hello")));
というカッコの入れ子が
"hello" |> doubleSay |> capitalize |> exclaim;
とシェルスクリプトのパイプのように
流れるような形で記述できるようになるらしいんだけど >>545
そんなのがあると誰もオブジェクト指向しなくなるからRubyの思想には合わないだろ
素直にメソッドチェインでやるか、さっさと関数型言語に乗り換えるべき 7-Zip Archives からダウンロードした、Ruby 2.4(x64)は、
ひょっとして、CUI 版のインストーラーなのかな?
(rubyinstaller-2.4.3-1-x64.7z というファイル名だった)
7-Zip Archives 中の、\bin\ridk.ps1 に引数を付けて、
インストールするのかも知れない
よくわからないけど。
インストーラーじゃないかも知れないし >>545-546
まさに、Elixir
Matz も、Streem という新言語を考案して、日経Linux に連載していた。
GitHub にあるらしい 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 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 の中にあるやつは、ポータブル版じゃないのか?
ひょっとして、実行もできるかも? 実行できて当たり前なのに何を言っているのか
インストーラーはパスを通したりするだけだぞ 7-Zip Archives からダウンロードした、Ruby 2.4(x64)は、
環境変数PATH が通っていないだけで、実行できるの?
ここに、実行環境が一式が揃っているの?
つまり、どこにでも移動できるポータブル版? >>548
期待したけど、やっぱりRubyの文法からは抜け出せないか
DSLが得意と言っても所詮Rubyの言語であることに変わりはないしな >>546
まあ頭が固いw
a + b はオブジェクト指向じゃないっていうんですか?
a.add(b) ってしなきゃいけないですね >>555
Rubyに文句を言う前にまずはRubyの仕様くらいちゃんと理解しよう
+は全く特別なところのないごく普通のインスタンスメソッド呼び出しだぞ
関数型でaddにパイプライン使うとしたら
b |> add(a) # add(a, b)に相当
こうなるわけだが、理解してるか? >>556
まあ君はJavaScriptの仕様を知らなくて当然だろうけどね
|> オペレータっていうのは、引数を一つの関数呼び出しの
シンタックスシュガーに過ぎない
だから関数呼び出しを行ってるのと一緒
関数呼び出しをするとオブジェクト指向にならないのか?
そんなわけあるかw >>557
ある機能が言語に追加されることでコーディングのスタイルが大きく変わってしまうことはよくある。
まあそういう経験則的な話は君には通じなそうだから、もっと具体的にRubyとの相性の悪さを説明してあげよう。
まず、関数型言語やJavaScriptでは裸の関数名は第一級関数(関数オブジェクト)だが、Rubyではメソッド呼び出しになってしまう。
だから>>548のようにシンボルを使った汚いハックをするか、|>の後にくる識別子は第一級関数として扱うという特別ルールを設けることになる。
特別ルールを設けたとしても、>>556のaddの例みたいな使い方には対応できない。
君は関数型言語を知らないみたいだから説明しとくと、add(a)はadd関数の第一引数にaを部分適用(カリー化)した引数一個の関数を返す。
|>の直後には必ず関数名が来るというルールだと、これは実現できないのはわかるよね。 それと、Rubyの関数は殆どがインスタンスメソッドであるというのも忘れてはいけない。
x |> y.hoge
これは y.hoge(x) と解釈すべきだろうか?
それともy.hoge()(x)かな?
今のRubyの仕様からすると後者が自然だと思わない? ようお前ら。
Ruby 2.5が来るのは明日だぞ。
gem作ってる奴はちゃんと準備出来てるか?
Ruby2.5にした途端に泣きを見ることのないようにしとけよ。 >>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) >>554
Ruby使うんだから当たり前の話でそ?
Rubyじゃないスタイルでどうしても書きたいならすでにRubyを使う必要はないと思うんだけど Juliaいいね。これから大注目の言語だよ
ただ、現状は起動が激重なのでJuliacとかが公式採用されないとつらいかも
そういう意味ではJavaに似てるのかも(言語仕様という意味ではなく) Juliaはクソ重い計算やデータの処理を長時間ぶっ通しで動かすための言語だよ
Rubyと比べるようなもんではないし、起動時間が問題になるようなものに使うのも間違い >>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
当然、現時点でその実装は存在しておらず「絵に描いた餅」に過ぎない
言い換えると、「こんなのできたらいいなあ」といふ話だよね? >>561
>関数型のパイプラインオペレータを導入なんて話はしてないんだから当然の結論
え、こう書けないっていうの?
let newScore = person.score |> double |> add(7)
もし pipeline proposal が Finished(採用決定)になったとしても、このコードを
let newScore = person.score |> double |> (_ => add(7, _))
こうも冗長に書かなけりゃならないなんて、ダサイというか中途半端な提案だと思う
>>554の言葉を借りると:
期待したけど、やっぱりJavaScriptの文法からは抜け出せないか
新しい提案と言っても所詮JavaScriptの言語であることに変わりはないしな
っていう感想です
しかも更にpapp proposal(部分適用サポートの提案)がFinishedになったと仮定してもなお
let newScore = person.score |> double |> add.papp(7)
こうなっちゃうなんて、もう少し練り直してから提案した方がいいと思うんだけどなぁ JS は、Ruby, Elixir の影響が強い。
Kotlin も、Groovy, Ruby の影響が強い
誰か、
>>540
の、7-Zip Archives の所からダウンロードした、
Ruby 2.4(x64)をどうすればよいのか、教えてほしい >>567
> え、こう書けないっていうの?
少しは頭を働かせようよw
そこにある、add(7) が引数を一つ取る関数を返すなら書けるよ
それを汎用化したのがpapp。それにJavaScriptでカリー化する方法だってある
JavaScriptは関数型言語じゃないんだから、関数型言語の方からみて
ダサいとか言うなよw お前、関数型に洗脳されてるだろw
関数型を取り入れたなんて話はしてない。お前が言い出しただけ。
単にパイプラインオペレータという関数のネストを見やすくする機能を
追加するってだけの話 >>570
Rubyについてはこんな書き方しかできないのかと毒づいておいて、JavaScripitについては全力擁護
これをRubyスレでやらかしてたら荒らし認定を食らってもしょうがないレベルだぞ >>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を脱却して、すでに使う方法が出来たということ 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のポータブル版の実行環境なのかも >>572
でさ、結局何が言いたいの?
JavaScriptサイコーってのが言いたいのなら完全にスレ違いだよ ちなみに、rubyinstaller の 7-Zip Archives の所からダウンロードした、
Ruby 2.4(x64)は9MB で、解凍すると56MB になった
1/6 に圧縮されている >>574
> でさ、結局何が言いたいの?
Rubyもサイコーになろうぜ >>570
>関数型を取り入れたなんて話はしてない。お前が言い出しただけ。
>>556 とは別人だけど、IDを確認できないほど冷静さを失っているのかな?
また、そもそも>>545の exclaim, capitalize, doubleSay という関数単位で部品化して
パイプライン演算子で組み立てるという発想そのものが関数型プログラミングであり、
それを自分(ID:A3ERayLu )から言いだしたという認識ができていないのかね?
>単にパイプラインオペレータという関数のネストを見やすくする機能を追加するってだけの話
だよね、関数型のパイプライン演算子と同じ名前だけど中身は微妙に異なるJavaScript固有の方言が
一つ提案されたという、ただそれだけの話
しかも最終的に採用されるか否かも確定すらしていない Proposal 段階でしかないといふ > また、そもそも>>545の exclaim, capitalize, doubleSay という関数単位で部品化して
> パイプライン演算子で組み立てるという発想そのものが関数型プログラミングであり、
関数呼び出しの形を変えただけ、
関数型プログラミングとは全く関係ない >>576
関数型言語のパイプライン演算子がサイコーという話なら同意するし、
それがオブジェクト志向言語であるRubyにとって今すぐ必要かどうかは別にして、
数ある将来のRuby構想に向けた提案の一つとして理解したい
でも >>561,570で自身(ID:A3ERayLu)が語っているように、
JavaScriptのそれは関数型ではないJavaScript固有の方言なんだろ?
JavaScriptが独自の道に進もうとしてるなら「どうぞお好きになさいませ」だし、
それにRubyも従うべきという話に至っては「何を考えてるの?」としか言えないね
>>570
>単にパイプラインオペレータという関数のネストを見やすくする機能を
>追加するってだけの話
どちらかというと日常的にカッコだらけになるのはPythonだから、
そちらへ提案した方がいいんではないかな
http://mevius.2ch.net/test/read.cgi/tech/1491491123/44-46
関数型プログラミングを公式文書で否定しているPythonだから、
関数型ではないパイプライン演算子の提案はきっと喜ばれるよ いずれにせよ>>559のようにメソッド呼出の括弧省略の問題があるからJavaScriptやCaml系のようなクリーンなシンタックスにはならないけどね
&:symbolとか->みたいなハック感溢れる醜い構文になる >>580
いや、オブジェクト指向言語のRubyなら、現時点でも
簡潔にメソッドチェーンで流れるようなコードが書ける
以下は>>545の例:
https://ideone.com/aExbWe
refinements に関しては以下の記事が分かりやすかったのでご参考
・Ruby の refinements の使い途 - Qiita
https://qiita.com/scivola/items/dc49d56c90fd0cb6d4d3
で、何かご不満はございますか? >>579
JavaScriptは元から関数型じゃないし
関数型になんかなろうとしてないよw >>581
> で、何かご不満はございますか?
はい。
def foo(i); end
def bar(i); end
def baz(i); end
となっているものの baz(bar(foo(1)) という呼び出しを
メソッドチェーンで繋げないということです。
パイプラインオペレータならこの通り
1 |> foo |> bar |> baz >>582
>JavaScriptは元から関数型じゃないし
うーみゅ、やっぱりJavaScriptって誤解されてるのね
・クロージャって何がいいの?
http://mevius.2ch.net/test/read.cgi/tech/1415419907/224
リンク切れ邦訳版「JavaScriptの勉強:世界で最も誤解されたプログラミング言語」
http://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
http://mevius.2ch.net/test/read.cgi/tech/1503644351/210 >>585
JavaScriptは関数型だってことにしたいんでしょw >>586
JavaScriptの話はそっちのスレでやれってこと >>585
まったくそのとおりですね
といふことで、JavaSciptのパイプライン演算子を提案されている方は、
JSスレヘお帰りになられるか、もしくわ
日常的にカッコだらけになってしまうPython(>>579)
スレへ移動されるよう希望します
特にRubyと違ってPythonは関数が一級市民ですから、
JavaScriptの手法を適用するのは(Rubyよりも)容易でしょう Windows10 の、VS Code で、irb (PowerShell ターミナル)を起動して、
put "abc"
なら、実行できるけど、
put "あいう"
のように日本語があると、実行できないね put "abc" # あ
のように、コメントに日本語がある時は、実行できる >>589
それはrubyじゃなくてlibeditの不具合だよ 知らないけど、UI 部分を、C言語とかで作っているから、
いつまで経っても修正できないのだろう
UI 部分は、VS Code みたいに、
ブラウザ技術を使っている、Electron で作れば良かった yield_selfは使いどころが結構ありそうだね yield_selfはこれまでメソッドチェーンをしたくてもできなかった場合で活躍するね
途中の一時変数は用無しになった 昨日のパイプライン演算子に関する話の中に出てきた >>583 のようなケースが
以下のように書けるようになる
https://ideone.com/hZI7wT
・Ruby 2.5 の yield_self - Qiita
https://qiita.com/stomk/items/58dce3e5e294639ab1c9
F# や Elixir の登場ですっかり世間の認知度がアップしたパイプライン演算子、
すっかりハマって
「プログラミングスタイルをパイプライン形式(いわゆるメソッドチェーン)で統一して書きたい!」
という欲求を抑えられない人たちにとっては嬉しいメソッドの新設ではないかと思われ
個人的には、メソッド名は apply もしくはそれを短くした app が
感覚的に合っていた(エイリアスを定義するだけなんだけどね) ふっふっふ、ようやく気づいたかね?
昨日のパイプライン演算子の話は
ここにつながるのだよ つまり:
・JavaScriptでは現時点だと最終的に採用されるか否かも定かでない Proposal 段階で、
実験的な実装をいじってあーだこーだ議論している真っ最中
・一方、Rubyではとっくに議論を終えて公式にリリースを終えてしまった
といふ話ですね ちょっと面白い発見
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"] private methodを定義する時ってどう書くのが普通?
private def foo
__bar
end
def foo
__ bar
end
private :foo
# クラスの後ろにまとめて定義
private
def foo
__bar
end 俺は後ろにまとめて書くようにしてる。
ついでに言うとprivateが連続した場合2個目以降のprivateは不要だが、パッと見て分かるように常に付けている。
最近は触って欲しくないメソッドはリファインメントを使うっていう手法を覚えたけど、これは異端なのか分からない。 アンチ息してる?
アンチスレ死亡してるみたいだけど アンチスレ死亡させていいよ
存在価値無いし、ここで十分 そもそもRubyのprivateって実質的な強制力はほぼゼロでコメントとしての意味くらいしかないからな
そういう意味ではよほど小さなクラスを除けば全部に付けないとあまり意味ないんじゃないか アンチがアンチスレの存在をすっごい嫌がってるのは、本スレで暴れたいからだろうな
だが、断る
アンチはあの過疎ったアンチスレへ帰るべきだ 結局ここにアンチが来てなくても
アンチの話題をしたいわけなんだよな
もう病気だと思うよw ■ このスレッドは過去ログ倉庫に格納されています