タグ付けされた質問 「ruby」

Perlから着想を得た構文とSmalltalkのような機能を組み合わせた、Ruby、動的、反射、汎用のオブジェクト指向プログラミング言語に関する質問。

4
GAEだけで、Rubyを介したPythonの学習を正当化できると思いますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 サーバーのセットアップ/購入やドメインの購入に関与する必要はないという事実を考慮して、事実だけでどちらかを選択するのに十分だと思いますか? 私は必ずしもGoogle App Engineで作業したいわけではありません。ホスティング/環境/などに関しては便利だと思います。そして、それがpythonを学ぶのに十分な理由かどうか疑問に思います。 いずれにせよ、私はpythonとrubyの間の議論を探しているのではなく、Google App Engineと、その価値が学習すべき言語を決定するのに十分であるかどうかについて探しています。

4
Ruby:if variable vs if variable.nil?
私はRubyを初めて使い、nilとfalseを除いてすべてのオブジェクトがtrueであることを知って驚いた。0でも真です。 言語のその特性についての良いところは、あなたが書くことができるということです: if !variable # do stuff when variable is nil end 経験豊富なRuby開発者である同僚は、.nilを使用する代わりにそれを選択すべきだと主張しています。そのようです: if variable.nil? # do stuff when variable is nil end ただし、後者は次の2つの理由により優れたオプションであると考えています。2.私の主題の意見では、たとえそれがよりコンパクトでなくても、より読みやすいです。 ここで「初心者」の間違いを犯していますか?

3
Rubyを使用してすべてを自動化できますか?
私は、さまざまなプラットフォーム(Windows、Linuxなど)で毎日動作するさまざまな種類のアプリケーション(Webベース、GUIベース、コマンドラインなど)に直面しています。スクリプトを使用してタスクを自動化する素晴らしい機会があります。しかし、ほとんどすべてのタイプのアプリケーションとプラットフォームには、ネイティブのスクリプト言語またはツール(Windows用のVBScriptとPowerShell、Linux用のBashスクリプト、Webアプリケーション用のSelenium、GUIアプリケーション用のAutoItなど)があります。非常に多くのスクリプト言語を学び、維持することは私を殺します。 Rubyはさまざまなプラットフォームと簡単に相互運用できると感じており、非常に表現力があります。だから私の質問は: Rubyを使用してすべてをスクリプト化することは可能ですか? その場合、各プラットフォームのネイティブスクリプト言語と比較して、主な欠点は何ですか?

7
Python / RubyとPHPを長い間使用していて、まだPHPを好む人はいますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 9年前に閉鎖されました。 私は通常、PHPを守る記事と使用されている議論に魅了されています。これらの種類の記事の著者は、他の言語でどのような経験をしたかについて言及しないことがよくあります。個人的には、誰かがPythonまたはRuby、そしてPHPを高いレベルで知っていて、それでもPHPを好むと想像するのは難しいと思います。 したがって、この説明に当てはまる人がいれば、これらの言語のいずれかよりもPHPを好む理由を聞いてみたいと思います。


5
すべてのRubyをHaskellであるかのように書いても大丈夫でしょうか?
Rubyには、リスト作成、マップ、選択、収集などの優れたリスト操作機能が組み込まれています。Procs、Blocks、Lambdasがあり、優れた反復サポート(eachファミリ)があるので、もしもRubyのものをすべて最も純粋に機能的な方法で記述しますか?I / Oがほとんどまたはまったくない(したがって、明らかな副作用が少ない)コードに特に適していますか? 私はHaskell(「本当の」ハッカーの言語と呼ばれます)を学んでいて、それを行う方法に夢中になっています。 Rubyはそもそも借りたり、そこから多くを学んだりしませんか?) 建設的なガイダンスは大歓迎です...

8
.NETへの依存を解消するにはどうすればよいですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 8年前休業。 私は何年にもわたってWindows GUIアプリケーションを開発しており、2005年の初めに.NETに飛び込みました。このキャンプに捧げます。GUIアプリケーションを開発できる新しい言語を学びたいです。 Rubyを学び、Pythonをインストールしたところです。Windows GUIアプリを開発するためのフレームワークであるWxRubyについて読みました。Rubyで。私はPythonに似たフレームワークを探しています。 それとは別に、プロダクションレベルのGUIアプリにより適した言語を知りたいです。Rubyが魅力的なRuby on RailsでWebプラットフォームに集中しているとは思えません。 私はこれらの豊富な.NETクラスとその印象的なVisual Studio IDEを取得できない可能性があることを知っていますが、それでもあまり旅に出ない道を歩みたいと思います。私はIronPythonとIronRubyを使いたくありませんが、しばらくしてから、手を探って探検するかもしれません。
10 python  ruby 

4
リファクタリング-すべてのテストに合格する限り、単純にコードを書き直すことは適切ですか?
最近、RailsConf 2014の「All the Little Things」を視聴しました。この講演中に、Sandi Metzは、ネストされた大きなifステートメントを含む関数をリファクタリングします。 def tick if @name != 'Aged Brie' && @name != 'Backstage passes to a TAFKAL80ETC concert' if @quality > 0 if @name != 'Sulfuras, Hand of Ragnaros' @quality -= 1 end end else ... end ... end 最初のステップは、関数をいくつかの小さなものに分割することです: def tick case name when 'Aged …

1
Pythonの結合は、結合するアイテムではなく、設計上の理由から、RubyやSmalltalkと比較してシンボルに焦点を当てているようです。
OOPの基礎の1つは、私たちが処理したい項目であるオブジェクトを持っていること、そしてそれらにメッセージを送信することだと思いました。 したがって、当然のことながら、アイテムのコレクションがあり、それらを1つの文字列に入れる必要があるため、次のようにします。 ["x", "o", "o"].join(" | ") # joining a tic-tac-toe row in Ruby (Smalltalkも同じ方法です)。これ" | "は、何らかの方法で、それを結合する方法の1つのトークンとしての議論と考えられています。それはすることができ" "、ゲームボードを簡素にする場合、あまりにも。したがって、結合要素" | "は、特に私たちが関心を持っているものではありません。特に重要または重要なのは、プログラムの主要なオブジェクトではありません。 Pythonがそれを使用する場合 " | ".join(["x", "o", "o"]) 何かについて議論をするために、私たちが議論にメッセージを渡しているように感じるのは、少し奇妙に感じます。多分Pythonはもっと手続き的ですか?参加する文字列に私たちに何らかの義務を果たすように伝えるには? 実装を保存して、joinコレクションクラスごとにを定義する必要がないようにするのですか?しかし、Rubyなどの任意のコレクションクラスに対して1回だけ記述することもできるというのは本当ではありません。 module Enumerable def my_join(joiner) self.inject {|a,b| a.to_s + joiner + b.to_s} end end (このようなものは、to_s各項目を呼び出しto_s、各クラスのに依存して独自の適切な処理を実行し、文字列に変換してから、それらを連結します)。そのため、文字列、ハッシュ、セットのそれぞれ、または私たちが持っているあらゆるコレクションクラスを実装する必要はありません。 または、Pythonは正しくOOPルートになりませんか?これは、使用len("abc")してtype([])の代わりに、"abc".len()または[].type()さえのpython3でもそれはそうです。Pythonは設計上の理由でこのようにしていますか?

4
非決定論的なリソース管理は漏れやすい抽象化ですか?
私が見ることができることから、リソース管理には、決定論的破壊と明示的破壊という2つの一般的な形式があります。前者の例は、C ++デストラクタとスマートポインタまたはPerlのDESTROYサブです。後者の例は、Rubyのブロックから管理リソースへのパラダイムまたは.NETのIDisposeインターフェイスです。 新しい言語は後者を選択しているようです。おそらく、参照カウント以外の種類のガベージコレクションシステムを使用することの副作用としてです。 私の質問はこれです:スマートポインターまたは参照カウントガベージコレクションシステムのデストラクタ-ほとんど同じこと-が暗黙的かつ透過的なリソース破壊を可能にすることを考えると、それは明示に依存する非決定的タイプよりもリークの少ない抽象化です表記? 具体的な例を挙げましょう。単一のスーパークラスのC ++サブクラスが3つある場合、特定の破棄を必要としない実装がある可能性があります。多分それは別の方法でその魔法をします。特別な破棄を必要としないという事実は関係ありません。すべてのサブクラスが同じように使用されます。 別の例では、Rubyブロックを使用しています。2つのサブクラスはリソースを解放する必要があるため、スーパークラスはコンストラクターでブロックを使用するインターフェースを選択します。ただし、他の特定のサブクラスは特別な破棄を必要としないため、ブロックを必要としない場合もあります。 後者はリソース破壊の実装の詳細をリークしますが、前者はリークしませんか? 編集:たとえば、RubyとPerlの比較は、一方は確定的破壊を持ち、もう一方はそうではないため、より公平である可能性がありますが、両方ともガベージコレクションされます。

3
Ruby(またはその他の動的言語)のインターフェイスの代わりに何を使用できますか?
私の目標は、クラス間のコントラクトを定義することです。 私はダックタイピングとすべてが好きですが、アプリケーションの異なるレイヤー間のインターフェースを定義して、外部から呼び出すメソッドと、他のレイヤーで使用してはならないアクセサリメソッドを明確に定義したいです。 たとえば、Javaでは、get()やsave()などのメソッドを使用してPersistorインターフェースを定義してから、データベースで永続化する必要のあるすべてのメソッドを使用してJdbcPersistorクラスを定義できます。また、リモートレストサーバーに保存するための他の方法を備えた別のRestPersistorもあります。 Rubyでインターフェイスを要求するのではなく、この区別を維持するためのきちんとした方法があるかどうかを確認するだけです。私はRubyが好きですが、Rubyを使用する小規模なプロジェクトにのみ取り組みました。

2
PythonとRubyが変数の値の宣言と割り当てを区別しないのはなぜですか?
最も一般的な動的型付けスクリプト言語の2つであるPythonとRubyは、変数の宣言と変数への値の割り当ての間で構文を区別しません。 それは両方の言語であり、変数nを宣言してそれに値を割り当てることは次のようになります: n = 10 そして、後で変数に新しい値を割り当てても、まったく同じように見えます。 これにより、2つの大きな問題が発生します。 値を変更するときに変数の名前にタイプミスがあると、新しい変数が作成されてバグが発生します。 コードの意図が不明確になります。変数が最初に宣言されて使用される場所がわからないため、コードがさらに混乱する可能性があります。 私が理解していないのは、これらの言語にvar、宣言と割り当てを区別するために、宣言で使用するキーワードがない理由です。これによって言語の動的型付けが減ることはなく、欠点もありません。 変数を明示的に定義する必要がないことの利点は何ですか?

2
Ruby-メソッド間でインスタンス変数とパラメーターを使用する場合
他のメソッドを呼び出すメソッドをいくつか書いています。 情報を渡すには、いくつかの選択肢があります。 情報をパラメーターとして渡す 他のメソッドがインスタンス変数にアクセスできるようにインスタンス変数を設定します どちらのオプションをいつ選択すればよいですか? 渡されるものについて非常に具体的であるため、最初のオプションは良いようです。欠点は、多くの値が渡されていることです。 2番目の方法はすべての値を渡す必要はありませんが、メソッドがインスタンス変数を「どこかに」設定するという多くの魔法につながるようです クラス内の他のメソッドに渡されることについて常に明示する必要がありますか?例外はありますか?

2
Javaプログラムから関数を呼び出してプリミティブ型の結果を受け取ることができるJavaでRubyファイルを実行する方法は?
何を求めているのかよくわかりません(笑!)。そうでない場合は、申し訳ありません。 Javaプログラムがあるとします。それは持っているMainとJavaCalculator、クラスを。JavaCalculatorのようないくつかの基本的な機能があります public int sum(int a,int b) { return a + b } 今、私はルビーファイルを持っていると仮定します。と呼ばれるMyProgram.rb。 MyProgram.rbルビプログラムに期待できるものをすべて含むかもしれません。次のものが含まれていると仮定します。 class RubyMain def initialize print "The sum of 5 with 3 is #{sum(5,3)}" end def sum(a,b) # <---------- Something will happen here end end rubyMain = RubyMain.new 良い。さて、あなたは私がしたいことをすでに疑っているかもしれません: Javaプログラムを実行したい Rubyファイルを実行させたいMyProgram.rb Rubyプログラムが実行されると、のインスタンスが作成され、JavaCalculatorそのsum関数が実行され、値が取得されてから出力されます。 ルビファイルは正常に実行されました。 Javaプログラムが閉じます。 注:「のインスタンスを作成するJavaCalculator」は必ずしも必要ではありません。クラスsumから関数を実行するだけで十分Mainです。 私の質問:そのようなことは可能ですか?特定の処理を実行して結果を取得するようにJavaプログラムに命令できるRubyファイルを内部で実行するJavaプログラムを実行できますか?上記の例では、RubyファイルがJavaプログラムに合計を求めて結果を返すように要求しています。 …

1
Datamapperでクラスのないテーブルは可能ですか?
次の属性を持つItemクラスがあります。 itemId,name,weight,volume,price,required_skills,required_items。 最後の2つの属性は複数値になるため、それらを削除して次のような新しいスキームを作成します。 itemID,required_skill(itemIDは外部キー、itemID and required_skillは主キーです。) 今、私はこの新しいテーブルを作成/使用する方法に困惑しています。私が思いついたオプションは次のとおりです。 1)ItemsとRequired_skillsの関係は1対多であるため、requiredSkillクラスを作成することができます。これは、one_to Itemにn個のRequiredSkillが含まれています。その後、私は行うことができますItem.get(1).requiredskills。これは私にとって最も論理的に聞こえ、次のようなメソッドとクエリを提供します。 sugar.components.create :raw_material => water.name sugar.components.create :raw_material => sugarcane.name sugar.components sugar.components.count 2)required_skillsは(ルールに似ているため)定数と考えることができるため、ハッシュデータベース、gdbmデータベース、または別のsqlテーブルに入れて、そこからクエリを実行することもできます。 私の質問は:データマッパーのモデルレステーブルのようなものはありますか?データマッパーはテーブルの作成と整合性に責任があり、データマッパーの方法でそれをクエリすることができますが、SQLで行うようにクラスを必要としません? 最初の方法を使用して問題を解決しました。正規化プロセスごとに新しいクラスを作成しました(上記の1対多の関連付けのように見えます)。しかし、私はオブジェクト指向プログラミングに不慣れであり、そのような正規化ごとに新しいクラスを作成することが、データマッパーでそれを行う通常の方法であるのか、それともハックであるのかわかりません。これと、これを行うためのより良い方法があるかどうかは、私が知りたいことです。 あずきっく 再読datamapper.org団体に数回、今私はDataMapperのは確かに参加するために別々のクラスを必要としていることがわかります。だからあなたは私の質問に答えました。しかし、ロバート・ハーベイが賞金を置いたので、私はダイナミックな方法についての応答をもう少し待つ責任を感じています。 あなたのコードは不満を述べましたCannot find the child_model Container for Item in containers。私はそれを以下のような自己参照関連付けの2番目の例でうまく動作させることができました(他のものへの参照としてここに置く): class Item class Link include DataMapper::Resource storage_names[:default] = "requirement_links" belongs_to :require, "Item", :key => true belongs_to :required, …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.