30

ルビーは強くタイプされていますか、それとも弱くタイプされていますか?

おそらく、Javascriptについても同じことが言えます。

4

7 に答える 7

50

Ruby は「強い型付け」です。

厳密な型付けとは、特定の型を必要とする操作がオブジェクトに対して実行される前に、オブジェクトの型 (OOP の意味ではなく、一般的な意味で) がチェックされることを意味します。

弱い型付けとは、オブジェクトに対する操作が成功することを確認するためのチェックが行われないことを意味します。(たとえば、関数が浮動小数点数の配列などの文字列にアクセスする場合、型チェックが行われなければ、操作は許可されます)

編集:この回答が投稿されてから6年が経ちましたが、追加の説明が必要だと思います:

何年にもわたって、「タイプセーフは絶対的なものではなくダイヤルである」という概念が、バイナリの意味 (はい/いいえ) を支持して使用され始めました。

Ruby は、ほとんどの典型的な動的言語よりも "強力な" 型付け ("er" を使用) です。ruby では、変換 IE: Array("foo"), "42".to_i, Float(23) に明示的なステートメントが必要であるという事実により、Ruby のタイピング ダイヤルは、「弱い型付け」よりも「強い型付け」のスペクトルの端に近づきます。 .

したがって、「Ruby は、ほとんどの一般的な動的言語よりも強力な型付き動的言語です」と言うでしょう。

于 2009-02-06T14:10:03.263 に答える
12

これらの用語の定義について議論することはできますが、私は次のように言います。

JavaScript が動的かつ弱い型付けであるのに対し、Ruby は動的かつ厳密に型付けされています。

于 2009-02-06T14:06:22.740 に答える
8

私見 Ruby は強力ですが動的に型付けされています。

于 2009-02-06T13:44:05.203 に答える
3

私はこれらの言語をダック タイプと考えます。

于 2009-02-06T13:39:38.003 に答える
1

過度に単純化された答えは、rubyとjavascriptの両方が弱く型付けされているということです。

ただし、この質問は見た目ほど明確ではありません。強い型と弱い型の言語の違いに関するより詳細な説明については、このウィキペディアの記事を参照してください。

于 2009-02-06T13:16:01.687 に答える