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

■ このスレッドは過去ログ倉庫に格納されています
2017/04/29(土) 02:01:58.34ID:urVXnFrH
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 59
http://echo.2ch.net/test/read.cgi/tech/1475394638/

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

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

逆引きRuby
http://www.namaraii.com/rubytips/
2017/06/18(日) 18:03:58.53ID:kXxrIi51
tmux使え
366デフォルトの名無しさん
垢版 |
2017/06/18(日) 18:13:50.36ID:mREyO8+w
>>365
レスTHX
terminal multiplexerを使えば良いのでしょうか?

someScript.rbを動かすには、someScript.plistを書いて
>launchctl load someScript.plist
ってやるらしいのですが、plistファイルなんて書いた事ないぞぉ。

書き方がよく判らん。
なにか、勘違いしてたら、ご指摘を!
367デフォルトの名無しさん
垢版 |
2017/06/18(日) 18:27:18.73ID:mREyO8+w
>launchctl load a.plist
/work/a.plist: Invalid property list


property listの書き方がよく判らん。
ただのxmlファイルじゃないのか?コメントの放り込み方が悪いのか?
無効なproperty listだとぉー?
368デフォルトの名無しさん
垢版 |
2017/06/18(日) 18:38:44.94ID:mREyO8+w
やったぁー。動き出しタァ。
Terminal.Appを閉じても動いてる。ふぅー。
369デフォルトの名無しさん
垢版 |
2017/06/18(日) 19:28:18.01ID:mREyO8+w
俺的忘備録

必須key、3つ
<key>Label</key>
<key>ProgramArguments</key>
<key>KeepAlive</key>

3つ目のやつを<true/>にしないとbackgroundで動かん!
さらに、最後のはOnDemand=falseと等価なのだが、
OnDemandはshould not use!だって。
man launchd.plistに詳細が記載。
370デフォルトの名無しさん
垢版 |
2017/06/18(日) 19:51:32.81ID:mREyO8+w
Labelが無いとどうなるんでしょう?
371デフォルトの名無しさん
垢版 |
2017/06/18(日) 19:54:50.51ID:mREyO8+w
Invalid or missing service identifier
372デフォルトの名無しさん
垢版 |
2017/06/18(日) 20:02:09.12ID:mREyO8+w
さて、stdoutはどうやって拾うのだ?
373デフォルトの名無しさん
垢版 |
2017/06/18(日) 20:13:05.46ID:mREyO8+w
man lauchd.plist
して/stdout
すれば出て来た。
2017/06/18(日) 22:47:06.74ID:o43mtcr6
>>364-368
Linux では、プロセス間に親子関係がある。
端末から、Aプロセスを起動すれば、端末が親で、Aが子

「親亀こけたら、子亀もこける」から、端末が終了すると、Aも終了する。
端末から、SSHで、リモートサーバーへアクセスしても、
接続断などで、リモートのシェルが終了すると、
シェルから起動したコマンドも終了してしまう

リモートで、tmux をずっと起動させておけば、コマンドは動き続ける

他には、サービス・デーモンのように、プロセスの親をなくす(デーモン化)

ptree コマンドで、プロセスツリーを見てみ
2017/06/19(月) 00:00:57.99ID:7PGcweVa
>>364
マッキンは知らんので、Linuxだとして。
おそらくプロセスを切り離さないと。

nohup、disownとかぐぐれ。
2017/06/19(月) 09:53:11.25ID:JRZAs/i8
>>374
そんな面倒なことしなくても
hoge.app &
でよくね?
2017/06/19(月) 09:56:20.02ID:rtjcKsU2
>>376
それやっても親子関係が残るからだめだっつってるのに文盲か?
378デフォルトの名無しさん
垢版 |
2017/06/19(月) 10:00:51.58ID:zE2VOzv5
>>375
THX

mackin’でもnohup使えた。
launchctlなんて使わなくて良さそう。

>>376
hoge.app&ではterminal.appの終了時にhoge.appがkillされちゃうんだよねぇ。
mackin’では。Linuxでは違うのか?
最近LInux触ってないのでよく知らんのだ。
379デフォルトの名無しさん
垢版 |
2017/06/20(火) 00:23:19.32ID:8wgIueO/
pstree コマンドで、プロセスの親子関係をツリー表示して、見てみれば?

結局、Ruby を学んでも、OS を学んでいなければ、
システム系のプログラミングは出来ない

だから普通、プログラマーよりも、LPIC資格を持っている、
サーバー構築・運用者の方が、給料が高い
2017/06/20(火) 00:54:05.18ID:uMblZ3Am
× システム系のプログラミング
○ 運用系のプログラミング
381デフォルトの名無しさん
垢版 |
2017/06/20(火) 08:29:32.89ID:rapwcYHc
>>379
system callを知らなくても、まあ、一部知ってるけどRubyスクリプト、スマホアプリは作れるよ。

OSを学ぶって、言うけど、それ幅が広すぎ!
まあ、パタ・ヘネ位は読んでます。
2017/06/20(火) 10:01:32.57ID:8wgIueO/
まあ、プログラマーで、プロセスに親子関係があるとか、
cron の使い方とか、tmux とか、知っている奴はいない

cron あるあるとか、SSH あるあるとか、Linuxでは定番
383デフォルトの名無しさん
垢版 |
2017/06/20(火) 10:41:15.76ID:rapwcYHc
>>382
プロセスに親子関係がある。コマンド実行時にshellがforkされるのは知ってたんだけど。。。
以前はnohupなんて使わなくても、
>someCommand &
とすれば
>nohup comeCommand &
した事になったのに!

いつから、nohupなんて現れたのだ?
384デフォルトの名無しさん
垢版 |
2017/06/20(火) 10:45:41.82ID:rapwcYHc
どうやらbashは終了時に起動したプロセスにSIGNHUPを送るらしい。

俺が昔使って居た、csh, tcshではそんな事はなかったのに!
時代は変わったんだな。
385デフォルトの名無しさん
垢版 |
2017/06/20(火) 12:38:36.99ID:5s5M5H6z
>>383
だよな
いつからだっけ
386デフォルトの名無しさん
垢版 |
2017/06/20(火) 12:39:25.49ID:5s5M5H6z
>>384
ああそれか
なんでbashみたいな糞が流行ったんだろ
387デフォルトの名無しさん
垢版 |
2017/06/20(火) 12:51:49.38ID:rapwcYHc
zshってのが便利だってのを、webの記事でよく見るけど、
どうなん?

bashが糞なら、zshを使って見るかな。
zshもbashの親戚みたいな動きをするなら、zshも糞って事になるけど。
2017/06/20(火) 13:51:30.44ID:DOO3yEYl
>>387
zsh もデフォの振る舞いは bash とおなじ。
設定で setopt nohup すれば、hup 送らなくなる。
bash でも huponexit オプション外せば送らなくなる。
ソフトウェアのマニュアルも読まずに糞とか言うのは、
自分は所詮そのレベルの人間ですと言ってるようにしか聞こえないよ。
389デフォルトの名無しさん
垢版 |
2017/06/20(火) 13:59:24.54ID:rapwcYHc
>>388
はい!
無闇に糞って言った事を、反省します。
390デフォルトの名無しさん
垢版 |
2017/06/20(火) 14:18:05.45ID:rapwcYHc
>>388
うぅーん。
macOS Sierraのbashにもshopt huponexitってのがあるが、
どうも、最初からoffになってるにも関わらず、signhupを送ってる。

ためしにonにしてみたが、bash終了時にbackground実行しているプロセスが死んでしまう事に、変わりなし。

nohupコマンドを付けないと、background実行できないみたいだ。
2017/06/20(火) 15:04:00.33ID:DOO3yEYl
>>390
bash の終了を exit じゃなくてウィンドウ閉じるでやってない?
明示してないのにバックグラウンドで動きっぱなしになっていて欲しいユースケースってどんな時なの?
nohup/disown の方が好きな自分からは想像できないわ。
392デフォルトの名無しさん
垢版 |
2017/06/20(火) 15:20:19.60ID:rapwcYHc
>>391
Scrapingスクリプトをproxy経由で動かす場合、proxyのレスポンスが悪いので、数時間掛かります。proxyは10箇所を順に変えながらScrapingします。

ruby someScript.rb &で即backgroundで動いて欲しいです。
まあ、慣れればいいだけかもしれんけど、nohupっていうprefixが必要なのは、ちょいとなぁ。
393デフォルトの名無しさん
垢版 |
2017/06/20(火) 15:22:05.91ID:rapwcYHc
>>391
Terminal.appは動かしッパでも構わないのですが、
Vim7.4, Vim8.0が時々落ちます。その際、Terminal.appも巻き添いなんです。
すると、Scrapingも落ちちゃって困ってたのです。
394デフォルトの名無しさん
垢版 |
2017/06/20(火) 15:23:21.50ID:rapwcYHc
Vimが落ちるのはterminal typeがxterm-256colorが悪さをしていて、ansiへ変更がwork aroundだと聞いて、今様子を見ているところです。
2017/06/20(火) 15:29:54.49ID:DOO3yEYl
>>393
vim 上の shell で実行してるの?
tmux か screen の上で動かすか、あきらめてnohup 書く癖を身につけるしかないかと。
396デフォルトの名無しさん
垢版 |
2017/06/20(火) 15:36:38.36ID:rapwcYHc
>>395
nohup書きます。
時代はnohupなんすね。

macOSアプリ作り始めたけど、AppKitってUIKitと似てるけど違うので、混乱するわぁ。
2017/06/20(火) 16:02:58.26ID:HkCB1WW9
rubyスレ?
2017/06/20(火) 16:14:40.13ID:+dHGS6wU
tmux使う方が早い
2017/06/21(水) 00:25:07.92ID:39OgiOwj
>>392
> 即backgroundで動いて欲しいです。

冷静になったら、そうでないほうがたしかによい、と思うはず。
誤ってbgにしたり、bgにしたまま忘れたりした状態でログアウトした場合のリスクを考えれば。
400デフォルトの名無しさん
垢版 |
2017/06/21(水) 13:07:38.08ID:L1LFWazB
むしろ、WSH で、Excel など外部アプリを起動すると、Excel のプロセスが残り続けるから、

どんどん、Excel のプロセスが増えていき、
これらをどうやって終了するのか、皆苦しんでいるんだが
2017/06/21(水) 18:38:55.26ID:xJXAtiMS
残らないが?
402デフォルトの名無しさん
垢版 |
2017/06/23(金) 10:35:54.52ID:0OdP20aK
>>399
bgの何が問題?
403デフォルトの名無しさん
垢版 |
2017/06/23(金) 10:36:22.71ID:0OdP20aK
>>400
馬鹿だな
2017/06/23(金) 13:24:40.77ID:AzvmtT2M
初心者です、自作の汎用関数を定義したのですが、いちいちスクリプト内にコピペするのが面倒なので
外部ファイルにして冒頭でrequireすることにしました。
ですが、ここに具体的なファイルパスを書くと、ファイルの設置場所を変えたい場合に問題があるのでパスは書きたくないです。
require 'myfunc'
と簡便に書ければいいのですが、どこに置けばいいでしょうか?
2017/06/23(金) 13:37:52.68ID:9PTuVR6v
現実の開発ではきちんとバージョン管理するのでフォルダの構成変更なんかそんなに頻繁にやることではない
だからリポジトリを分けるほどでもないなら気にせずパス決め打ちでいい
独立性と再利用性が高いものであればリポジトリを分けてgemにする
2017/06/23(金) 14:21:13.96ID:AzvmtT2M
ありがとうございました
2017/06/23(金) 14:40:20.24ID:tdHTYauf
rails で、自作ライブラリの、autoload なら、

lib/モジュール名/クラス名.rb
lib/foo/bar.rb

module Foo
class Bar

ファイル名は小文字で、単語の区切りは'_'に変える

class FooBar
lib/foo_bar.rb
2017/06/23(金) 14:43:58.67ID:qsHmY7yg
>>404
場合によっては環境変数 RUBYLIBにmyfunc等のパスを淹れるのもあり
https://docs.ruby-lang.org/ja/latest/doc/spec=2fenvvars.html
2017/06/23(金) 18:29:59.15ID:+um/cK3a
>>400
“終了しない excel application”でググったら出てきたけどこの仕様は罠だろ・・・
410デフォルトの名無しさん
垢版 |
2017/06/23(金) 18:31:41.63ID:PAAniHx4
馬鹿には無理
2017/06/23(金) 19:09:21.56ID:F2nCEsS4
>>409
COM経由で起動させてるんなら自動で終了する方がきもちわるい
2017/06/23(金) 19:49:53.85ID:+um/cK3a
>>411
自動化処理に使ったプロセスが不要になっても残りっぱなしの方が気持ち悪い
2017/06/24(土) 18:05:14.46ID:M5zFSS9+
>>404
モジュールファイルへの相対パスなら確定できる場合はrequire_relative。
特定ディレクトリの設定だけなら許容できる場合は、そのディレクトリを$:に追加。
2017/06/24(土) 18:06:46.13ID:M5zFSS9+
>>412
プロセス自身にはわからんじゃろ。。。
2017/06/28(水) 09:33:18.25ID:+O8L6XqQ
瑕疵担保責任(かしたんぽせきにん)

瑕疵担保責任のポイント

民法改正で事実上期限が「無制限」になった
バグや設計のミスなどは、瑕疵担保責任
納品物に不具合があれば損害賠償を請求される可能性もある
不具合を指摘されたらすぐに行動をとるべし
軽微なミスでも先延ばししない

http://www.atmarkit.co.jp/ait/articles/1706/26/news014.html
http://itpro.nikkeibp.co.jp/atcl/news/17/052601508/?rt=nocnt

改正法では欠陥に気付いてから1年以内にITベンダーに通知すれば、
通知後5年以内は修正や報酬の減額などを求められるとしている

全ベンダーが泣いた民法改正案を解説しよう その1
http://www.atmarkit.co.jp/ait/articles/1609/14/news009.html
http://www.atmarkit.co.jp/ait/articles/1609/14/news009_2.html
http://www.atmarkit.co.jp/ait/articles/1609/14/news009_3.html

ポイント1:修補や損害賠償、契約解除の期限がなくなる

従来あった「瑕疵担保期間は引き渡しから1年」という考えはなくなる。
条文にある通り、注文者は成果物が契約の目的に適合しないことを発見したら、
その「発見したときから1年以内」ならさまざまな請求ができる。発見が10年後なら、
11年後まで請求可能なのだ。

もっとも、現実のユーザーとベンダーの関係でも、たとえ契約書に「瑕疵担保責任期間は納品から1年と」明記されていても、
「2年目以降は不具合の修正に対応しない」と主張するベンダーはまれだ。多くの場合は、納品から何年たっても、
バグが見つかればユーザーのところに飛んで行き、無償で改修するだろう。
2017/06/28(水) 10:47:59.83ID:+O8L6XqQ
366 :nobodyさん 2017/05/29(月) 16:07:39.16 ID:6v4UcGhE
今回の民法改正、ソフトウェア受託開発の場合、(検収後ではなく)バグ発見後1年瑕疵担保責任があるということで、地獄かよ、と思ったが、
元々問題が起きがちな受託案件がビジネス的に成立しなくなることで強制的に業界再編につながるなら良いことかもと思うようになった。
一部で地獄を見ても。
https://twitter.com/yukihiro_matz/status/869061879389343744

367 :nobodyさん 2017/05/29(月) 16:28:06.55 ID:6v4UcGhE
ニュース - 改正民法が成立、「瑕疵担保責任」などシステム開発契約に影響大:ITpro
http://b.hatena.ne.jp/entry/itpro.nikkeibp.co.jp/atcl/news/17/052601508/

372 :nobodyさん2017/05/29(月) 19:10:37.12 ID:???
Railsでシステム作って納品する

Railsはマイナー、メジャーのアップデートが半年以内に必ずある

客がアップデートする。アップデートによるエラーやバグ、動作の不具合に気づく

気づいてから1年以内に通知すれば、5年間無料保証ゲット

つまりRailsがアップデートするたびに、無償の修正作業を発生するということかな

376 :nobodyさん2017/05/30(火) 09:20:20.09 ID:L5po86sS
>>378>>379>>375
客が瑕疵担保責任法の法改正を知ってくると思うから、今後5年無償保証をお願いされるだろう
営業がそれでも仕事を取ってこれるか?たぶん無理だろう。無限の直していたら赤字になる。
こういう保守に弱い言語、ころころ仕様が変わる言語は仕事として発生しなくなってくる。
これは変わり目だ。お前らも早く逃げたほうがいいぞ。RubyやPHPなど動的言語は確実に廃れる。
保守に強い言語のみ生き残れる。
2017/06/28(水) 19:56:54.80ID:ZzpJpley
> RubyやPHPなど動的言語は確実に廃れる。
軽々しくこういう断言する人間の言葉は話半分どころか1/4以下にして聞け、ってばっちゃが言ってた
2017/06/28(水) 20:15:29.47ID:kl/WEkBu
Rubyが現在進行形で廃れていってるのは確かな事実だけどね
2017/06/28(水) 21:48:23.90ID:WbQwz649
ぶっちゃけて言えば、意味論的には普通なのに文法がぐちゃぐちゃすぎて使いづらい。
Perl のあまりの一貫性のなさに Ruby を試したりしたこともあるが、
多少はマシって程度でうんざりするような無茶苦茶さを指向していることにかわりない。
parse.y が黒魔術の塊だというのは聞いていたが、実際に見てみると常軌を逸している。
せっかく yacc を使ってるのに純粋な LALR として解釈できないようなわけわかんないクソが埋め込まれてて、
もはや統制が取れてない。
mruby をベースにして拡充していった方がいい気がする。
2017/06/30(金) 00:38:26.19ID:UcGpMueB
使いづらいなら他の言語使えばいいじゃん
わざわざRubyスレ覗いてRubyの悪口書いてる暇があるなら他の言語でコード書こうぜ
2017/06/30(金) 01:21:01.84ID:svEzz20W
>>420
だからもう十年以上使ってない。
事実として文法規則のごちゃごちゃしたところはあるという話だよ。
そして事実として私はそれを気に入らなかったという話だよ。

よくある場面を短く書けるとか人間の一般的な感覚に合わせたりもした結果だというのはわかっているし、
Ruby に向いた用途があるのは知ってるよ。
ただ、それの行く先には実装上の行き詰まりが生じそうだという懸念だ。
2017/06/30(金) 01:37:54.59ID:UcGpMueB
>>421
うん、そんな人間がなぜRubyスレを覗いてて、なおかつ悪口を書き込むのか
はっきり言えば粘着質で気持ち悪い
2017/06/30(金) 02:32:52.47ID:7V8Jdo2I
Rubyは読み書きしやすいから使ってる
規則が統一された文法が良ければLispを使えよ
2017/06/30(金) 09:41:10.74ID:jqp1y4Nc
何で使ってない言語を見に来ているの?
暇なの?
2017/06/30(金) 09:50:34.06ID:flSVgAwO
rubyは上級者には不満があるのかもしれんが、俺の様な素人が使うには使いやすい。
メソッドチェインも「.」でつなげていくだけだし、
正規表現使うのにimportとかしなくていいし。
でも複数行のコメントアウトは面倒。
426デフォルトの名無しさん
垢版 |
2017/06/30(金) 09:51:37.98ID:BBkM2EA1
>>422

Rubyスレに来て悪態さらすヤツってのは、喩えて言えばこんな感じだ。
最初は、良い会社だと思って就職した。
けど、外から見るのと、入って見るのとでは大違いで、内部は火の車だった。
(例:最近の東芝、タカタ)

転職活動も、うまくいかず、悪態をつかざるを得なくなる。
2017/06/30(金) 10:15:14.59ID:pDIkSJMf
2ちゃんも昔は良かった
428デフォルトの名無しさん
垢版 |
2017/06/30(金) 11:25:06.46ID:BBkM2EA1
>>427
そうかぁ?殺人予告とかあったんだぞ!
そんでもって、本当に発生してビックリなんてのが、2chなのだ。
2017/06/30(金) 11:30:06.98ID:hBaGJvUf
>>425
> でも複数行のコメントアウトは面倒。

初心者スレということでいちおうマジレスしておくと
=begin
=end
で囲むと一挙にコメントアウトできる
430デフォルトの名無しさん
垢版 |
2017/06/30(金) 11:33:27.81ID:BBkM2EA1
>>429
たしか、こんなのも
__END__

以下の行は全てコメント!
うる覚えだが。
2017/06/30(金) 11:38:01.54ID:625dciv9
>>429
こんな糞みたいなの教えたって誰も使わない
2017/06/30(金) 11:45:54.89ID:flSVgAwO
>>429
すみません。知っているんですが、
jsとかみたいに/**/とかだと入力がラクだなーって話です。
2017/06/30(金) 12:42:16.16ID:UcGpMueB
>>432
メモ帳使ってるわけじゃないんだろうからそれぐらいショートカット使えば差はない
2017/06/30(金) 12:50:26.31ID:hBaGJvUf
タイピングの文字数に拘るあたりが初心者だよな
(↑それが悪いことだとは言っていないし、一切の悪意は無い)
プログラミングを指の労働と捕らえてるんだよな
2017/06/30(金) 13:04:45.36ID:mtvSOUWH
>>429
>>430
どっちもコメントアウト用じゃないから
2017/06/30(金) 13:09:33.76ID:UcGpMueB
>>435
=begin, =end は一時的なコメントアウトにはよく使うよ
2017/06/30(金) 13:35:43.48ID:2Da2vksV
>>434
それはMatz批判か?
処理系を黙らせるためだけの冗長な記述を強いられることは屈辱であると神が仰っている
2017/06/30(金) 13:40:13.66ID:625dciv9
そんなperlのパクリ機能なんかもう使ってる人いないよ
普通は#で複数行コメントアウトするようなエディタ使ってるでしょ
2017/06/30(金) 14:08:18.32ID:W0OUnv8/
黙らせるならexit!やな
2017/06/30(金) 16:49:14.50ID:tesV9X+3
一時的に処理から外したいときは「そういやRubyにも複数行コメントの記述法があったななんだったかな」と思いながら
#と方向キーを交互に連打してるかコメントリージョン機能を使ってるかどっちかだな
2017/06/30(金) 18:29:44.40ID:4uO/IbWe
atomやvscodeだったら Ctrl + / で行コメントの挿入削除
2017/07/01(土) 04:05:27.85ID:J52nGMUC
俺は if false 〜〜〜 else 〜〜〜 end を使ってる
あるいは後置 if false
元の処理を走らせる場合は否定演算子を付けて if !false みたいにしてるなあ
2017/07/01(土) 04:30:56.70ID:yR6MEKU9
>>442
それでは駄目なのだ
まあじきにわかる
2017/07/01(土) 05:26:51.20ID:PPsHHHSM
>>434
まったくその通りだな
「=begin」程度でタイプ数多くてダルいとか

Rubyは記述だと簡潔な方だし
コメントアウトを多用するなんて
書き方してたらそもそも筋が悪い
2017/07/01(土) 11:17:02.68ID:N+ZXroXE
>>414
爺なの?
2017/07/01(土) 14:26:38.71ID:R60vnDrO
同じ処理をさせようとしても
初心者が書くのと慣れてる奴が書くのとですでに差が出てる
a = ['a', 'b', 'c']
b = []
i = 0
a.each {|c| b << (i.to_s + c); i += 1}
p b

↑こーいう書き方する人ほどタイプ数に拘り
↓こーいう人はもはやそこでは騒がない

c = %w(a b c).each_with_index.map {|c, i| i.to_s + c}
p c
2017/07/01(土) 14:59:17.39ID:yR6MEKU9
いい加減壁に向かって物言うのやめたら
誰もそれを話題にしてはいないよ
2017/07/01(土) 15:48:19.58ID:qX8eRJNR
>>446
それはわかる
ダメな奴は抽象度を上げようとせずに同じことを短く書こうとする
地頭悪いのをプログラミングの小手先のスキルで誤魔化してる奴にありがち
2017/07/01(土) 16:44:27.93ID:R60vnDrO
>>448
そうそうw
なんかこう、間違った努力をしちゃうんだよねえ
2017/07/01(土) 19:39:10.28ID:QATpSz/4
>>443
駄目でもないのじゃ。
違う処理を簡単に試してみたいときなんかは、外したい部分にも最低限の文法チェックがかかるので、事故が少なかったりな。
451デフォルトの名無しさん
垢版 |
2017/07/01(土) 20:41:44.60ID:M8KylmXN
b = []
b << 要素

1つずつ、配列に追加していく処理だけど、
エラー処理などがいらないなら、簡潔に書くべき
2017/07/01(土) 21:37:44.67ID:sOThA7TG
>>446
> 初心者が書くのと慣れてる奴が書くのとですでに差が出てる

せやね

お前が書くと
c = %w(a b c).each_with_index.map {|c, i| i.to_s + c}

俺が書くと
c = %w(a b c).map.with_index {|c, i| i.to_s + c}

これはタイプ数の問題じゃねーよ?
配列から配列に変換して入れる処理で
eachって単語がでてくることキモいって話
2017/07/01(土) 22:38:49.78ID:M8KylmXN
関数厨は、Ruby・JS のスレにやって来て、

何でもかんでも、map を使って、1行で書いてしまうからなw
2017/07/01(土) 22:44:59.49ID:Tp0p2tiJ
>>452のようなことに特に興味がなくて
正直どっちでもよくね?
って考える普通の人はRubyを使わなくてもよいってことなんだよ
まさにこれがRuby
「タイプ数にこだわるのは初心者」
「そうそうそうなんだよね〜」
とか言いながら動的型言語を使うのって最高でしょ
2017/07/01(土) 23:45:31.46ID:N+ZXroXE
mapperかな
2017/07/01(土) 23:49:19.16ID:cxvWbv+r
いくらRubyのコード効率が良いと言っても可読性を犠牲にするつもりはないな
無用に行数を減らしたりオブジェクト名の長さを減らしたりはしない
そういう書き方をすると後で苦労するのは自分だし
2017/07/01(土) 23:54:52.06ID:sOThA7TG
>>456
可読性というのは読むべき「単語」を減らすものであって
行数を減らすことやオブジェクト名を減らすことは
単語を減らすことにはつながらない。

例えば行数を減らしたとしても、それが 空行や { などの
カッコだけの行を減らした所で単語数は変わらない。
むしろ空行がある方が読みやすい文章となることもある
名前も、短い名前にしても単語数は変わらない

単語数を減らすと結果的に行数が減ることはあるが、
行数を減らすことは可読性を上げる行為ではない。
458デフォルトの名無しさん
垢版 |
2017/07/01(土) 23:56:03.86ID:5xgWPcGQ
>>453
本当の関数厨は今時map程度に拘らんぞ。
どの言語でも採用されてるしな。

{|c, i| i.to_s + c }

のがどうにか出来ないか気になるw
2017/07/01(土) 23:56:04.59ID:sOThA7TG
ちなみにさっき書いたこれ。

c = %w(a b c).each_with_index.map {|c, i| i.to_s + c}
c = %w(a b c).map.with_index {|c, i| i.to_s + c}

下の方が「単語数」が減っている。
each with index map ・・・ 4単語
map with index ・・・ 3単語
2017/07/01(土) 23:57:42.07ID:sOThA7TG
>>458
できるぞ

c = %w(a b c).map.with_index {|c, i| "#{i}c" }
2017/07/02(日) 00:03:47.37ID:0SO6fajC
あ、間違った。こうなw

c = %w(a b c).map.with_index {|c, i| "#{i}#{c}" }

俺としては、なんでmapがデフォルトでindexを持ってないかのほうが気になるな。
JavaScriptならこれでいいのに

a = ['a', 'b', 'c']
c = a.map((v, i) => i+v)
2017/07/02(日) 00:18:14.45ID:IGa4njyh
>>461
というかJavaScriptが特殊なんだよ
引数の数のチェックをしないからな
2017/07/02(日) 00:19:08.94ID:J2BCSwZK
JavaScriptはJavaの名前にあやかっただけで全くJavaじゃないって本当ですか?
2017/07/02(日) 00:23:24.49ID:0SO6fajC
>>462
Rubyでもこの文脈では引数の数のチェックをしてないようですが?

%w(a b c).map.with_index {|c| "#{c}" } # 引数が足りなくてもエラーなし
%w(a b c).map {|c, i, x, y, z| "#{i}#{c}" } # 引数が多くてもエラーなし
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。