From: Sreedhar K. [email protected]
Unlike Java why does not ruby specify the method parameter types.
Because, unlike Java, Ruby is not a strongly typed language.
How can a caller know what type of parameter is the method expecting.
Read the method’s documentation?
On Mon, Apr 7, 2008 at 4:28 PM, Mike B. [email protected]
wrote:
Because, unlike Java, Ruby is not a strongly typed language.
To be pedantic, both Java and Ruby are strongly typed. However, Java
is statically types, and Ruby is dynamically typed.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Avdi G. wrote:
| On Mon, Apr 7, 2008 at 4:28 PM, Mike B. [email protected]
wrote:
|> Because, unlike Java, Ruby is not a strongly typed language.
|
| To be pedantic, both Java and Ruby are strongly typed. However, Java
| is statically types, and Ruby is dynamically typed.
|
Ruby is?
irb(main):001:0> t = String.new
=> “”
irb(main):002:0> t.class
=> String
irb(main):003:0> t = 1
=> 1
irb(main):004:0> t.class
=> Fixnum
irb(main):005:0> exit
Doesn’t look like it to me, since I can change the type of a variable
with ease.
Phillip G.
Twitter: twitter.com/cynicalryan
Rule of Open-Source Programming #37:
Duplicate effort is inevitable. Live with it.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkf6jiUACgkQbtAgaoJTgL9AOgCfU5pDjiz+K1RP35cLhk9xZnlz
63AAoIKEeH+TUqC82uUoIHke3v+FpnzW
=9FdL
-----END PGP SIGNATURE-----
On Mon, Apr 7, 2008 at 5:12 PM, Phillip G.
[email protected] wrote:
Ruby is?
Doesn’t look like it to me, since I can change the type of a variable
with ease.
You’re confusing static typing and strong typing.
In a weakly-typed language, like C, it is possible to cast an integer
as a, for instance, a char*, and then call string functions like
sprintf() on it and the compiler will compile it, the runtime will run
it, and it will wreak whatever havoc you please. Most high-level
languages are strongly-typed, these days - neither Java or Ruby will
allow you to call a String method on an Integer. You can assign
whatever object you want to a variable in Ruby - hence dynamic
typing - but that object will only ever allow you to call supported
methods on it; otherwise you’ll get a NoMethodError. Hence strong
typing.
El Lunes, 7 de Abril de 2008, Phillip G.
escribió:>
Doesn’t look like it to me, since I can change the type of a variable
with ease.
No, look at the following example:
irb(main):001:0> text = "The number is: "
=> "The number is: "
irb(main):002:0> number = 25
=> 25
irb(main):003:0> puts text + number
TypeError: can’t convert Fixnum into String
from (irb):3:in `+’
from (irb):3
from :0
On 08.04.2008 00:53, Phillip G. wrote:
|
| methods on it; otherwise you’ll get a NoMethodError. Hence strong
| typing.
|
Thanks for the enlightenment.
Another way to put it would be that Ruby’s variables are type-less,
while objects do have a specific type. While we’re at it: type !=
class. Basically the type is defined by all operations (aka methods)
usable on an instance - not the class it was created from.
Kind regards
robert
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Avdi G. wrote:
| On Mon, Apr 7, 2008 at 5:12 PM, Phillip G.
| [email protected] wrote:
|> Ruby is?
|>
|> Doesn’t look like it to me, since I can change the type of a variable
|> with ease.
|
| You’re confusing static typing and strong typing.
|
| In a weakly-typed language, like C, it is possible to cast an integer
| as a, for instance, a char*, and then call string functions like
| sprintf() on it and the compiler will compile it, the runtime will run
| it, and it will wreak whatever havoc you please. Most high-level
| languages are strongly-typed, these days - neither Java or Ruby will
| allow you to call a String method on an Integer. You can assign
| whatever object you want to a variable in Ruby - hence dynamic
| typing - but that object will only ever allow you to call supported
| methods on it; otherwise you’ll get a NoMethodError. Hence strong
| typing.
|
Thanks for the enlightenment.
Phillip G.
Twitter: twitter.com/cynicalryan
Zmodem has bigger bits, softer blocks, and tighter ASCII.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkf6pcwACgkQbtAgaoJTgL9trwCghb7DYangJvsq/ktpceHh12FD
004AnikbmUhG0gwWUJywu43qfbPa76sK
=b6S6
-----END PGP SIGNATURE-----
Avdi G. wrote:
To be pedantic, both Java and Ruby are strongly typed. However, Java
is statically types, and Ruby is dynamically typed
Indeed. I stand linguistically admonished.