トップページ⇒tech
995コメント369KB

Ruby 初心者スレッド Part 55

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2014/06/21(土) 23:39:44.94ID:rKd1VvW8
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
RoRはスレ違いよ

前スレ
Ruby 初心者スレッド Part 54
http://peace.2ch.net/test/read.cgi/tech/1392598207/

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

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

逆引きRuby
http://www.namaraii.com/rubytips/
0002デフォルトの名無しさん2014/06/21(土) 23:40:40.82ID:z7G+00JR
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                         霊長類研究所
0003デフォルトの名無しさん2014/06/21(土) 23:57:21.14ID:nSPSSkcc
>>1乙
0004デフォルトの名無しさん2014/06/22(日) 00:02:10.62ID:P/6Lf536
>>前1000
.NET3.5向けにビルドしたものは
マニフェストファイルで.NET4.5での動作を許可するよう指定すれば.NET4.5上で動く
デフォルトで動かないのはMSのクソ厳格な互換性ポリシー(.NETは業務向けだからね)によるもので、
普通の基準でいえば完全な互換性がある
0005デフォルトの名無しさん2014/06/22(日) 01:13:10.71ID:upDz43Y5
>>997
>自分が調べた結果では
>Win7は.NET Framework2.0/3.0/3.5が入っている
>Win8は.NET Framework4.5が入っていて.NET Framework3.5は無効化されている

Win7向けにビルドしたC#アプリを素のWin8へインストールして実行しようとすると、
.NET Frameworkのバージョン不一致で起動すらできないってこと?
そうだとしたらWindowsは糞だけど、信じられんな
OSXならCocoaフレームワークが2つ前くらい迄なら、平気で実行できるのに
0006前10002014/06/22(日) 18:36:27.68ID:ZfkThsTa
>>4
情報ありがとう、そういうことなんだね....
元質問者さんの目的であれば、マニフェストファイルを修正して
差し替えた改変版の IronRuby とスクリプトを irpack でexe化すれば、
解決できる可能性はありそうだ

MSの互換性ポリシーに関しては、それが業務向けであるということなら、
妥当な方針だと言わざるをえない(中途半端に動くよりもベターだから)

とはいえ、OSX上での開発がC++/CarbonからObjC/Cocoaへ完全移行したように、
WidowsでもC++/Win32からC#/.Netへ移行したものだと思い込んでいたけど、
Win8の時代に至っても一般のデスクトップアプリ開発ではC++/Win32が必須なんだね
業務アプリではない元質問者さんが、IronRuby の採用そのものに抵抗を感じるのも分かる
0007デフォルトの名無しさん2014/06/22(日) 19:08:05.07ID:kD+jIMJ8
一般のデスクトップアプリ開発ではC++/Win32が必須
一般のデスクトップアプリ開発ではC++/Win32が必須
一般のデスクトップアプリ開発ではC++/Win32が必須
一般のデスクトップアプリ開発ではC++/Win32が必須
一般のデスクトップアプリ開発ではC++/Win32が必須
一般のデスクトップアプリ開発ではC++/Win32が必須
一般のデスクトップアプリ開発ではC++/Win32が必須
一般のデスクトップアプリ開発ではC++/Win32が必須
0008デフォルトの名無しさん2014/06/22(日) 21:40:35.61ID:LFA4ujmd
発狂して終了か
0009前スレ9662014/06/22(日) 23:19:35.65ID:95RLu5vG
>>4をみてIronRuby 1.1.3を試してみました
.NET Frameworkのバージョン以前に.起動の遅さとRubyコードの実行の遅さが気になります
手近なコードを走らせてみましたが.NET Framework 4.5.1でIronRuby 1.1.3が走り出すまで
3秒強くらいかかります。.NET Framework 3.5だと6秒くらいかかります
さらにコードが実行完了するまで4秒くらいかかります。コードの実行時間は
.NET Framework 4.5.1でも.NET Framework 3.5でも大差ないようです
同じコードをRuby 2.1.2で実行するとコードの実行に0.1秒強くらい(起動は一瞬)なので
ちょっと遅いとかそういうレベルではない感じです
JRubyも同じくはかってみましたがJRuby 1.7.12が起動するまでに5秒くらい、コードの実行完了
に2秒弱くらいでした
VM実装の処理系だと遅いのはさけられなさそうですね。これだと1.8の方がまだ速そうです

Rubyから.NET Frameworkのクラスを呼び出すようなラッパーがあれば・・・っとググって見ると
Ruby/.NET Bridgeなるものがあったらしい?(今は消滅?)。使えるレベルのラッパーがあれば
本家の高速性と豊富な.NETのクラス群を使えて良いとこ取りが出来そうですが

う〜む・・・Rubyで行くならRuby 1.8.7+wxRuby 0.6.0でお茶を濁すしかないのか・・・
RubyにこだわらないならPython+wxPythonやC# for VC#2008EXあたりになるのかな

#計測に使ったコードはStringにconcatしまくる系の物です
0010デフォルトの名無しさん2014/06/22(日) 23:19:40.68ID:jnseZCAU
互換性ポリシー弄れば動くっつてんのにそこからC++/Win32必須なんだねとか意味不
端っから自分の妄想した結論以外は受け付ける気がないでしょ
0011デフォルトの名無しさん2014/06/23(月) 01:29:19.73ID:LLEITqEE
なんで違う人に絡んでるのか
0012デフォルトの名無しさん2014/06/23(月) 03:34:48.43ID:owP8nPZ4
wxPythonおぬぬぬ
0013デフォルトの名無しさん2014/06/23(月) 20:00:51.23ID:Jv1bdWLq
ところでRubyって何の役に立つの?
0014デフォルトの名無しさん2014/06/23(月) 20:13:31.25ID:9imRHr/V
>>13
コンピュータに命令することができます。
0015デフォルトの名無しさん2014/06/23(月) 22:15:43.67ID:BINMcHFB
人に命令するの上手くなったほうが100倍マシだな
0016デフォルトの名無しさん2014/06/23(月) 23:03:36.19ID:7NlEu9GA
命令を聞いてくれる相手を探すのが先だな。
0017デフォルトの名無しさん2014/06/23(月) 23:51:44.83ID:owP8nPZ4
金
0018デフォルトの名無しさん2014/06/23(月) 23:57:28.82ID:s879JP9J
リファレンスマニュアルのインスタンス変数のところに
attr_accessorの使用例がほしいな
外部からインスタンス変数を参照する方法って何かあったよなと
リファレンスマニュアルとにらめっこすること数十分。メソッド定義の
ところにattr_accessorの使用例が載っているのを見つけて一件落着した
0019,,・´∀`・,,)っ-○○○2014/06/24(火) 00:09:30.84ID:xHFmkiJx
instance_variable_get / instance_variable_setの使い方覚えておくと
自前でアクセサ定義するときに助けになりますよ
0020デフォルトの名無しさん2014/06/24(火) 07:58:05.88ID:1kTNOLbu
ソースのエンコーディング(たとえばsijis)を指定した状態で
str.concat "\xff\xff\xff\xff"
と書くとデータ列によってCompatibilityErrorが起きる場合がありますが
これを防ぐ方法はありますか?
str.concat [0xffffffff].pack("V")
と書けば同じ結果を得られますが↑の書き方よりかなり遅いです
0021デフォルトの名無しさん2014/06/24(火) 11:06:05.40ID:VrH3d8m/
ジャップまた負けたのかwwww
0022デフォルトの名無しさん2014/06/24(火) 18:47:07.86ID:r/Uvv29G
>>20
str.concat "\xff\xff\xff\xff".force_encoding(str.encoding)
ではどうだろうか?
0023デフォルトの名無しさん2014/06/24(火) 19:47:53.32ID:c5+BSms2
>>20
文字列をバイト列として扱う場合はエンコーディングをASCII-8BITに揃えるがよろし
0024デフォルトの名無しさん2014/06/24(火) 21:06:26.58ID:3Daegd5r
バグっぽいの見つけた。
p(
1
2
) #=> syntax error ←分かる

p((
1
2
)) #=> 2 ←分かる

p (
1
2
) #=> syntax error ←2個目のコードの引数の括弧を省略した形だから2になるはず
0025デフォルトの名無しさん2014/06/24(火) 21:39:43.41ID:c5+BSms2
>>24
メソッド名とカッコの間にはスペースが許されているので、一番上と同じように解釈される
よって syntax error
0026デフォルトの名無しさん2014/06/24(火) 22:43:47.80ID:3Daegd5r
引数が2個以上あるメソッドだとスペース挿むとエラーになるけどそれは
0027デフォルトの名無しさん2014/06/25(水) 09:01:04.56ID:jzzlw1ru
p (( 1 2 )) # => syntax error
p (( 1
2 )) # => 2

また負けたのかwwwwwwwwwwwww
0028デフォルトの名無しさん2014/06/25(水) 14:42:21.47ID:A2jEgt78
>>27
p (( 1
2 )) # => 2
これは
p (( 1; 2 )) # => 2
と同じ

>>25
irb(main):001:0> p(1,2)
1
2
=> [1, 2]
irb(main):002:0> p (1,2)
SyntaxError: (irb):2: syntax error, unexpected ',', expecting ')'
0029202014/06/25(水) 19:32:24.84ID:y7Yol2H5
>>22-23
ありがとうございます。両方とも問題なく動くようです
ascii-8bitの指定はRuby 1.8相当の動作という認識で
良いのかな?
0030デフォルトの名無しさん2014/06/28(土) 14:23:12.83ID:Vb0rbHjb
ifで条件にマッチした場合に使うライブラリを呼ぶ直前でrequireをしたら
「requireはソースコードの上の方でやるもんだ」
って言われました。

使うかどうか分からないのにとりあえずrequireするのっておかしくないですか?
gemの依存関係はgemspecに書いてるし、そのソースコードでどんなライブラリが使われているか一覧することに何のメリットがあるんですか?
知りたければgrep requireすればいいですよね?
って言ったら怒られました。
よくわかりません。
0031デフォルトの名無しさん2014/06/28(土) 17:48:20.84ID:Ik80dgEP
ケース・バイ・ケースだけど、どうしても動的に require しなければいけない理由がない限りは
ソースの上の方でやっておいた方が見通しはよくなるね
0032デフォルトの名無しさん2014/06/28(土) 18:02:41.94ID:MBrErHLJ
慣習
0033デフォルトの名無しさん2014/06/28(土) 18:11:58.34ID:JCL+UsP9
>>30
そのライブラリの依存関係をgemspecで必須と明示してあるなら、
その仕様(specificationに従って、単純にファイルの先頭で require すべき
ある特定の「条件にマッチした場合」に限るという実装(implementation)は、
ライブラリが必須であるという仕様に違反している
0034デフォルトの名無しさん2014/06/28(土) 20:27:57.09ID:Vb0rbHjb
>>31
どうしてもってわけでもないけど、
コマンド叩いてすぐに処理結果が欲しいコマンドツールの類いだとrequireすると遅くならない?
RoRとか立ちあげっぱなプログラムならまだ許容できるけど。
>>33
よくわからんけど、そうすると、
例えばhttpサーバのライブラリがあるとして、
http_server -versionってバージョン表示させるだけでspec.add_dependencyのgemを全部requireしてるのですか?
0035デフォルトの名無しさん2014/06/28(土) 22:47:38.23ID:JCL+UsP9
> コマンド叩いてすぐに処理結果が欲しいコマンドツールの類いだとrequireすると遅くならない?

いや、requireの実行時間が問題になるようなRubyアプリケーションは、ほとんど存在しない
もしアプリケーションの起動時間が気になるほど遅いのであれば、まず性能測定をすべき
多くの状況下では require 以外の処理、たとえばサーバへの接続待ちや
大量のデータファイル読み込み等がボトルネックになっているはず

> http_server -versionってバージョン表示させるだけでspec.add_dependencyのgemを全部requireしてるのですか?

そうだよ、実行時に必須なライブラリはサーバ起動時にすべてrequireする
逆に、必須ではなく条件に応じて必要になるライブラリは spec.add_dependency せず、
サーバ起動後に特定の「条件にマッチした場合」に require する
たとえばプラグインのようなオプション・ライブラリは、設定ファイルで指定された場合、
あるいはプラグイン・ディレクトリにライブラリが存在する場合にだけ require する
0036デフォルトの名無しさん2014/06/29(日) 01:12:28.28ID:fkqTTz9x
たとえばwatirだとnewした後に色々とrequireされてる
最初のrequire"watir"で必要以上のクラス定義までやってない

こうすべきだみたいなのをしつこくいう奴は一種の精神病か高2病みたいなもん
絶対に正しいソースコードの書き方なんてものはないのに
0037デフォルトの名無しさん2014/06/29(日) 02:19:09.05ID:+CIKJ6ui
>>35
例えばrails -vしても明らかに必要最低限のスクリプトしかrequireしてないわけだが、
これもやっぱり>>33的には違反してるね。
屁がでそうになってきた。
0038デフォルトの名無しさん2014/06/29(日) 11:01:30.37ID:Jxhjl2/k
Railsはオートロードのための仕組みを持ってるので、そもそもrequireを書く必要がない
0039デフォルトの名無しさん2014/06/29(日) 11:56:13.78ID:cjgiIXv/
>>37
Rails級の巨大フレームワークを開発するプロジェクトは、ごくまれな特殊ケース

一般的なRubyアプリケーション/ライブラリ開発プロジェクトの場合:
・動的な require が必要なケースは、組込みの Kernel.#autoload を使う
・つまり「(必須ライブラリを)単純にファイルの先頭で require する」(>>33)が
 「(必須ライブラリを)単純にファイルの先頭で autoload する」に代わるだけ

Railsフレームワーク上でのアプリケーション開発プロジェクトの場合:
・開発中(development)では頻繁にRailsの再起動を繰り返すので、
 アプリケーションは遅延ロード(lazy loading)される --> デフォルトの動作
・本番運用時(production)では、
 アプリケーションは単純に(=貪欲に)ロード(eager loading)される
・ただし、もしも常に(=本番運用時でも)遅延ロードさせたい必須ライブラリがあるなら、
 メソッド ActiveSupport.on_load のブロック引数内で明示的に require する

>>30のような、if文を使った条件判定による動的な require は推奨されない
一般的なプロジェクトはもちろん、たとえRailsアプリケーション開発であっても
0040デフォルトの名無しさん2014/06/30(月) 02:08:57.29ID:BzHZeElB
推奨されない(キリッ)
0041デフォルトの名無しさん2014/06/30(月) 15:42:59.39ID:qlWBcG3y
thorで半角スペースを含む引数ってどうすんの?
普通に
--foo='bar baz'
ってやると
--foo=bar
baz
ってバラされちゃうんだけど
0042デフォルトの名無しさん2014/06/30(月) 16:14:43.24ID:9mB1LZ3w
エスケープ
0043,,・´∀`・,,)っ-○○○2014/06/30(月) 20:23:55.18ID:la/ujWVd
条件分岐でインスタンスの動作変えたいならポリモーフィズムで実現すべきだろ
0044デフォルトの名無しさん2014/07/01(火) 11:24:36.03ID:WApzAG0A
Mechanizeとかだと最初のrequireがかなり重い
実はあれIDN対応のライブラリを読んでて無駄に重い
国際化ドメイン名なんて99%の人間には不要なのだが
0045デフォルトの名無しさん2014/07/05(土) 03:05:10.71ID:FujCrvNA
C言語厨が作るライブラリは規則規則ってなっててそうなる
0046デフォルトの名無しさん2014/07/05(土) 09:38:00.53ID:eW5SdgQ8
どこかでRuby使いの人が「PHPは関数が多くて覚えきれない」とコメントしているのを読んだんですけどRubyってそんなに関数が少ないんですか?
逆に関数が少ないと困ったりしないのかと不安になるのですが。
0047デフォルトの名無しさん2014/07/05(土) 09:42:51.16ID:MbZ2I/h/
ヒント: namespace
0048デフォルトの名無しさん2014/07/05(土) 10:08:09.40ID:gQAWVLid
ちょっとだけ違う名前のよく似た(しかも長い)関数が成立経緯上仕方なくうまく整理できずにバラバラに存在するため、
Rubyのように本当の最初からクラスやモジュールがあってそこに整理され(最悪でも詰め込まれて)いるライブラリと比べると、
どうしても存在レベルで冗長でわかりにくく間違いやすい印象が否めない

というような程度の意味だろう
本当に記憶に支障があるという話ではない
0049デフォルトの名無しさん2014/07/05(土) 10:21:12.46ID:MxOk5d7i
>>46
たとえば、文字列と配列の長さを取得する場合

Ruby:
string.length
array.length

PHP:
strlen($string)
count($array)

たとえば、文字列と配列を逆順にする場合

Ruby:
string.reverse
array.reverse

PHP:
strrev($string)
array_reverse($array)

確かにPHPのを覚える自信は、俺にはない
0050デフォルトの名無しさん2014/07/05(土) 10:21:28.25ID:6PKoBQqR
整理されてれば覚えなくてもだいたいドキュメントですぐ探せるからな
0051デフォルトの名無しさん2014/07/05(土) 10:37:30.05ID:MbZ2I/h/
sprintf
wsprintf
sprintf_s
_sprintf_l
_swprintf_l
__swprintf_l

確かに覚えられん
0052デフォルトの名無しさん2014/07/05(土) 12:27:47.54ID:mPq5qhEh
数年前にwxrubyで書いたアプリを手直ししようと思ったんだけど、
web上のドキュメント的なものが一切なくなってて困ってます
知らない間に滅んだ?
0053デフォルトの名無しさん2014/07/05(土) 12:38:25.10ID:5PqNKKxq
>>52
Webではないデスクトップ向けGUIツールキットは、
どれも寂しい/厳しい状況みたいだね
Mac限定なら MacRuby、Unix系限定なら Ruby-GNOME3 を選べるけど、
Windows系やマルチプラットフォーム系はどれもこれもメンテされていない

>>4-9 および前スレ終盤あたりも参照
0054デフォルトの名無しさん2014/07/05(土) 13:21:17.02ID:eW5SdgQ8
みなさんありがとうございます。
似たような動きをする関数なのに無駄に細分化されていて面倒だって事なんですね。
確かに文字列も配列も同じ関数(メソッドでしたっけ?)で操作出来たほうが直感的に書けますね。
やはりPHPからは移行した方が良さそうですね。
日本製だから日本語の不具合なんかも起こりにくいだろうし。
0055デフォルトの名無しさん2014/07/05(土) 14:00:29.85ID:mPq5qhEh
>>53
丁度似た悩みの方がいらしたんですね
参考に色々試してみます ありがとうございました

本当に滅びつつあったとは凹む
0056デフォルトの名無しさん2014/07/05(土) 14:02:51.25ID:MbZ2I/h/
Ruby は Web 用言語(キリッ
0057デフォルトの名無しさん2014/07/05(土) 14:03:50.21ID:5PqNKKxq
>>54
ちなみに Python の場合

長さを取得:
len(string)
len(array)

# len(x) は関数だから、string.len() や array.len() とは書けない

逆順にする:
# string.reverse() ==> 文字列は不変オブジェクトなので反転できずエラー
array.reverse()

# Python のreverse() メソッドは、操作対象を破壊的に操作する(sort() も同様)
# Ruby であれば、非破壊な Array#reverse と破壊的な Array#reverse! という
# 二種類のメソッドが組込みで提供される

Python の一貫性の無さと比較すれば、
・オブジェクト指向言語である Ruby は、オブジェクトへのメソッドとというスタイルで
 統一されたプログラミング・インターフェイスを楽しめる
・非破壊メソッドが提供されているので、メソッド・チェーンを使った
 流れるような関数型プログラミングを楽しめる
0058デフォルトの名無しさん2014/07/05(土) 16:01:37.65ID:AM2aRkfD
Rubyの直交性の高さになれているとほかの言語はストレスがたまる
0059デフォルトの名無しさん2014/07/05(土) 16:59:56.26ID:6PKoBQqR
Rubyはそんなに直交性高くないと思うぞ
Javaのライブラリとか直交性が過剰なのはすげえ使いづらい
Rubyは客観的な直交性よりも、ユースケースを想定して
一緒に使うものが近くにくるようにまとめてある感じがする
どっちかというと.NETに似てるかな
0060デフォルトの名無しさん2014/07/05(土) 18:33:03.23ID:pJl1PMF0
今時、Ruby使うとか、どんだけニワカ
0061デフォルトの名無しさん2014/07/05(土) 18:53:37.70ID:lUrjnl8F
プログラミングを始めようと思った時
PHPが良いよって知り合いに言われて
どれどれと思って検索したら
「あっ(これはちかづいちゃいけない)」って思って
そいで近所の先生にきいたら
HSPとかすぐに動くのができていいよって言われて
どれどれと思って検索したら
「あっ(これはちかづいちゃいけない)」って思って
そのあとRubyを始めた
0062デフォルトの名無しさん2014/07/05(土) 18:55:26.27ID:5PqNKKxq
>>58,59
直交性という言葉は堅苦しいので、
「驚き最小の原則」と呼ばれることがあるね
ただし、Wikipediaによれば Matz が
この原則を設計哲学に採用したことはないそうな
0063デフォルトの名無しさん2014/07/05(土) 20:56:37.25ID:eW5SdgQ8
>>57
Pythonとの違いを教えて頂けて助かりました。どちらにしようか迷っていたので。
表示速度が遅いとGoogleから冷遇されやすいというのが頭にあって「遅い」と言われ続けていたRubyには不安で手を出せなかったんです。最近物凄く速くなったと聞いて真面目に検討していました。
例示していただいたコードみたいに統一感があるのは初心者としては取っ付きやすそうです。
0064デフォルトの名無しさん2014/07/05(土) 21:10:42.13ID:lUrjnl8F
(´・ω・`)最近暇だ…
(´・ω・`)RoR秋田…
0065デフォルトの名無しさん2014/07/05(土) 22:17:07.92ID:gQAWVLid
なんだろう、なんかもやもやする
0066デフォルトの名無しさん2014/07/05(土) 23:37:16.48ID:ZoUg1MJx
小日帝国で大麻が合法化されないなら
ゲートウェイランゲージRubyは違法化されるべきニダ
0067デフォルトの名無しさん2014/07/06(日) 01:20:26.14ID:P2yVj5Pd
>>49
うえーん reverse なんてあったんだ、知らなかった
0068デフォルトの名無しさん2014/07/06(日) 01:28:14.97ID:+YGfR2l7
arr.compact
arr.compact!
上は元の配列を変更しないけど、
下は元の配列を変更する(破壊的なメソッド)

Matzは人間がボトルネックになることを知っているから、
なるべくルールを明確にして、
覚えることを減らそうとしたのだろう
0069デフォルトの名無しさん2014/07/06(日) 01:53:09.63ID:YqH0gfGj
!付きメソッドの重要性は昔より低下している気がするな
昔は結構速度差があったから!で済むときは!を使った方が
速かったけど、最近はその差がだいぶ縮まった

そういやPythonやJavaScript向けにRuby似の標準クラス
ライブラリとかあったらすごく使いたいと思う
0070デフォルトの名無しさん2014/07/06(日) 06:13:16.56ID:qu0eEdBG
>>68
!ついてなくても破壊的なの結構あるよね

はい論破
0071デフォルトの名無しさん2014/07/06(日) 07:31:07.09ID:hw7hO+cc
!はできるのに!?はだめなのはどうして?
変数名に!とか?はだめなのはどうして?
変数名の最初の文字に数字が駄目なのはどうして?
0072デフォルトの名無しさん2014/07/06(日) 11:48:59.33ID:BCJIA2if
破壊的なものに!を付けるんじゃなく、!ありなし2バージョン設ける場合は
より注意が必要なほうを!付きにする、というのがもともとのお約束。

Railsだと、!ありなし2バージョンある場合、!ありは失敗時に例外を投げる、
!なしは偽を返すみたいになってたかな。
0073デフォルトの名無しさん2014/07/06(日) 11:58:02.96ID:bJUCx13z
そもそもルールでもないし文法でもないからなメスッド名末尾の ! や ? は
アンダースコアと同じで、便利に使ってもらって構わない
(その使い方が他の人にとっても便利かどうかは保証しないが)
0074デフォルトの名無しさん2014/07/06(日) 12:03:33.80ID:GKoC5bbZ
>>71
0xff
0075デフォルトの名無しさん2014/07/06(日) 12:32:08.87ID:bJUCx13z
変数名とかの先頭に数字が使えないのは
「そっちのほうが余計なこと考えなくて速く内部処理できるので、伝統的に人間側に我慢してもらっている」
という程度の回答しかない

全角イコールの=でも変数代入できれば便利かもしれないし、
全角空白と半角空白を同一視すれば初心者に優しいかもしれないが、
処理系はたったそれだけのためにアホみたいに遅くなる
なので誰もやらない

それと似たようなもんだ
0076デフォルトの名無しさん2014/07/06(日) 12:38:59.42ID:JQNQW/rx
>>75
そんなパージングの速度なんかたかがしれてるよ
単純に需要がないからやってないだけ

変数名の最初に数字が使えないのは、数値リテラルと区別するためだよ
0077デフォルトの名無しさん2014/07/06(日) 14:12:09.10ID:bJUCx13z
>>76
変数名の先頭に数字使えないプログラミング言語は掃いて捨てるほどあるけど、
どれも揃って需要がないから足並み揃えてやってないんですか?
0078デフォルトの名無しさん2014/07/06(日) 14:20:25.72ID:hw7hO+cc
!?とかつかいたいんだけど
破壊的にお問い合わせする場合とか
0079デフォルトの名無しさん2014/07/06(日) 14:54:18.29ID:Vjzww54e
お前なんで他の言語巻き込んで話を一般化しようとしてるの?
0080デフォルトの名無しさん2014/07/06(日) 14:55:10.41ID:JQNQW/rx
>>77
そうだよ

Lispなんかは数字が先頭でも大丈夫じゃなかったかな
0081デフォルトの名無しさん2014/07/06(日) 15:12:17.13ID:UgKQDcKg
010 == 8
0082デフォルトの名無しさん2014/07/06(日) 21:55:00.85ID:Nj41+MNM
>>69
>そういやPythonやJavaScript向けにRuby似の標準クラス
>ライブラリとかあったらすごく使いたいと思う

JavaScript だと Underscore.js とういライブラリが相当品になるね
Ruby の Enumerable 提供メソッドと比較すると
JavaScript の標準ライブラリは貧弱だけど(map/select/inject相当しかない)、
これを Underscore.js が補ってくれる
この Underscore.js とDOM操作ライブラリである jQuery の組合せが、
今時の一般的な JavaScript プログラミングらしい

Python に関しては、よく知らんけど実現不可能じゃないかと思う
>>57では書いていなかったけど、Rubyのブロックに相当する
Python のラムダ式には、その本体に式しか書けない(=文が書けない)という
関数型プログラミングにとっては致命的な制限がある
この制限によって、Ruby や JavaScript と比較するとメソッド・チェーンの
簡潔さや表現力が著しく劣る(はっきり言って使い物にならない ....)
関数型も部分的には導入したけど、あくまで手続き型プログラミングが主体である、
というのが Python の設計哲学なので、それを受け入れるしかない
0083デフォルトの名無しさん2014/07/07(月) 13:56:06.17ID:x3+FWwz1
win7でRubyインストールしたんだけど、
コマンドプロンプトではgemコマンドも実行できるのにgithub入ってるpowershell.exe上だとgemがコマンドレットになる
どうすればいい?
0084デフォルトの名無しさん2014/07/07(月) 16:56:05.67ID:SPqafUmZ
サーバー開発用なら仮想マシンにLinux入れろ
Win環境での作業に使うスクリプトならPythonへ行け
0085デフォルトの名無しさん2014/07/07(月) 18:19:53.12ID:tDx8Ub5T
_人人人人人人人人_
> 突然のPython <
 ̄Y^Y^Y^Y^Y^Y^Y ̄
0086デフォルトの名無しさん2014/07/07(月) 19:08:17.84ID:RBOB+lfi
Bundlerでnokogiri入れようとしてるんですが、
packaged librariesを使ったビルドって最近のMacで何時間くらいかかるものなんでしょうか?

ちなみに当方の環境はMacBook Pro 15inch Ratina (2013)です。
OSはMavericksです。
目安もなくただ待つの辛いっす(´・ω・`) packaged librariesでビルド成功した人いたら所要時間教えて下さい。
0087862014/07/07(月) 19:48:06.65ID:RBOB+lfi
ようやく終わった…。
約2時間というところでした。上手く行ってよかった…。
お騒がせしました(´・ω・`)
0088デフォルトの名無しさん2014/07/07(月) 21:31:59.62ID:mALYvw5d
>>83
ならばコマンドプロンプト上で実行すればいいんじゃないの?
もしUNIX相当の操作性が欲しいなら、Cygwin や GnuWin 等で
bash のEXE版を導入するのが手っ取り早い方法

もしどうしてもPowerShell環境を前提にしたいなら、
この板の専用スレで質問したほうがいいと思う
PowerShell からすれば Gems も単なるコマンドの一つにすぎないんだから
0089デフォルトの名無しさん2014/07/08(火) 02:23:11.91ID:gmDQAblm
(´・ω・`)ルビー究めたらモテる?
0090デフォルトの名無しさん2014/07/08(火) 10:42:52.19ID:it1DuFz/
>>88
ありがとうございます。
PowerShellをそもそも理解していなくて、確かにcmdでコマンド打っていけばいいんですね。
githubのgitShellがPowerShellでのリモート接続?みたいになってて、わけわからなかった

Cygwin、GnuWin勉強になりました。
0091デフォルトの名無しさん2014/07/09(水) 02:38:35.03ID:Mc0pdBnn
powershellは入力補完も効くし、
処理の結果を、オブジェクトで扱える

デバッグ環境なら、powershellと同じフォルダにある、
powershell_iseを使えばよい
コマンドを画面で指定できる

-WhatIf で実行せずに、結果を見れる
0092デフォルトの名無しさん2014/07/09(水) 10:15:07.54ID:7mAKqlSH
RT >84

>>89
Python の方がモテる
0093デフォルトの名無しさん2014/07/09(水) 10:34:32.06ID:Gd8+EGXP
>>92
RTってw
ここはツイッターじゃねえんだよ
あとPythonの方がモテるってデータよこせ
昨日別のスレで根拠もなくPythonのシェア80%とかほざいたバカがいたが
お前は違うよなぁ?
0094デフォルトの名無しさん2014/07/09(水) 21:16:51.49ID:upQsnXcW
Python利用者はおっぱい好きが多い
0095デフォルトの名無しさん2014/07/10(木) 09:17:42.80ID:bTs9rCAT
概ね、型がStringのオブジェクトに対して
メソッドを定義したいのですがその際、
Stringを継承する以外の方法はあるでしょうか
影響範囲を狭めたくて。
0096952014/07/10(木) 09:19:22.09ID:bTs9rCAT
>>95
ごめんなさい、重要なことが書きもれていました。
メソッドチェーンができるようなメソッドを定義したいです。
0097デフォルトの名無しさん2014/07/10(木) 10:36:07.22ID:b/HkBDRx
必要なメソッドだけString型に委譲とか
でもStringを継承しないことによって影響範囲が狭まるのか?
継承元がほぼ不変といっていいなら対して差がないんじゃないか
0098デフォルトの名無しさん2014/07/10(木) 10:46:05.37ID:K4xUSUJb
基本クラス本体に勝手にメソッド追加するような奴は死んでいいよ
そして全滅するActiveなんとか

そのStringオブジェクトがひとつくらいしかなくて、他への影響が心配なのなら、
メソッド入れたモジュールつくって、自作文字列オブジェクト単体にがちょんとくっつけるといい
0099デフォルトの名無しさん2014/07/10(木) 10:54:25.59ID:K4xUSUJb
irb> module MyString; attr_accessor :author; end
irb> str = "Gimmick!"
irb> str.extend(MyString)
irb> str.author = "俺俺"
irb> puts str.author
俺俺
0100デフォルトの名無しさん2014/07/10(木) 22:12:15.29ID:42BTLfYF
windowsでgetsを使ったらどうも文字数が254文字くらいまでしか入力できないんだけど
そういうもんなの?
0101デフォルトの名無しさん2014/07/10(木) 22:19:12.89ID:fp5I0Zvk
いいえ
■ このスレッドは過去ログ倉庫に格納されています