
-----------------------------------
JHanson90
Mon Nov 01, 2004 10:39 pm

[Ruby-tut] It's Object-Oriented!
-----------------------------------
I would like to make something clear to the people that read this forum everyday and take Ruby's uber-cool object-orientedness for granted.  A little while back, I said that everything in Ruby was object-oriented.  But what does that mean?  Let me try to explain the best I can without PHP:
In that code fragment, "echo" is a "contruct" of the PHP language, and the '.' brought the two strings together.  What does that mean?  In Ruby, there really is no ambiguity:# Ruby
puts "This is " + "text."
That is equivalent to the following (though it might return an error because of Ruby coding standards):self.puts("This is ").+("text.")
Why?  Because, unlike in many other languages where functions are just functions and operators are just operators, everything in Ruby is object-oriented; "puts" is a method of the "self" object (self being the actual program), and "+" is a method that adds its argument to the previous expression.
The most strict idea that everything is OO in Ruby exists; it suggests the most structured foundation for a great, powerful, but easy language that I hope will grow in the Western hemisphere.


On with a Simple Ruby Tutorial.
You will need a Ruby interpreter -> http://www.ruby-lang.org/
> Comments... # this is a Ruby comment, lasts till end of da line
> Local variables and method names must begin with a lowercase letter.
> There are four important arithmetic methods (these are similar, but not identical, to "operators" in other languages): +, -, *, /.  Here are explanations of + and *, some useful ones that differ from other languages:
+ -- This will combine any two expressions of the same type.  Methods to ensure they're the same type are explained later. variable = 5 + 5 # that expression returns 10
variable1 = "super" + "dee" + "duper" # that expression returns string "superdeeduper"
* -- This will multiply two expressions, but that don't necessarily have to be of the same type. variable2 = "A B C " * 2 # that expression will return string "A B C A B C "
variable3 = 2 * "A B C " # this will return an error.  Unlike above, where you could say A B C  teice, you cannot say 2 for an "A B C " amount of times.
> No need for semicolons at the end of each statement, so long as there is still a newline character there.
> Use the "to_s", "to_i", and "to_f" methods to convert their object to the string, integer, and float data types, respectively. variable4 = '5' # string
variable5 = 5 # integer
variable6 = 5.0 # floating point
variable7 = variable4.to_i + variable5 + variabke7.to_i # that expression returns 15, but...
variable8 = variable4 + variable5.to_s + variable6.to_s # that expression returns string "555"
> If, elsif, else just like in other languages.  Use == method for equality and != method for inequality, etc.  Use "and", "or", and "not" 'logical' methods (like logical operators... ) if (variable9 == variable8 or not variable9 == variable7)
	# do something
elsif (5 == var)
	# do something else
else
	# otherwise do this
end
> Use gets for taking input from the user's keyboard, and it would be a good idea to 'chomp' off the newline character at the end of it too. variable10 = gets.chomp # get just means 'get', and s means 'string', hence gets or 'get string'
> To define your own methods use the def keyword def a_method a_parameter
	puts a_parameter
	"this is what gets returned; it is the last line of code in the method"
end
variable11 = a_method "Ruby is cool" # declare variable 11 is assigned to the return value of the 'a_method' method, with the parameter "Ruby is cool"
puts variable11 # output: "this is what gets returned; it is the last line of code in the method" (puts returns nil, the no-value value in Ruby, so puts a_parameter in the method definition didn't do anything)

A Program#!/usr/bin/ruby
# you can use shebeng and make the file executable on linux, to escape the idea of calling the ruby interpreter yourself
def say_hi
	"hi"
end
puts "PROGRAM: You suck at Ruby."
print "YOU: "
your_response = gets.chomp
if your_response.downcase == 'so do you' # the 'downcase' method converts its object to all lowercase, but doesn't affect that direct variable.
	puts "PROGRAM: Yeah... well, how about I say hi?"
	puts say_hi
else
	puts "PROGRAM: I'm smart cause int 5 + int 5 = 10 but string 5 + string 5 = 55 :)"
end

I am very error-prone; if I made any mistakes, wtd, go ahead and point them out

-----------------------------------
wtd
Mon Nov 01, 2004 11:00 pm


-----------------------------------
Very nice.

Have some bits.  :)

Now show people how to create their own classes.

-----------------------------------
Tony
Mon Nov 01, 2004 11:38 pm


-----------------------------------
great to see more people interested in Ruby so much :D Keep it up.
