Ruby Programming

This page contains some of my notes on Ruby programming... it is not intended as a 'Tutorial'
I have some scripts set up for easy command line testing, linked with Notepad++ like my regular tutorials... Get them here:
Download the Devtools


Bases

Decimal 100
0d100
Hexadecimal 0x1FF
Binary 0b10101010
Octal 0o1234567

Operators

Operatior 
Description Example
+ Add a + b will give 30
Subtract a - b will give -10
* Multiply a * b will give 200
/ Divide b / a will give 2
% Modulus − Get Remainder b % a will give 0
** Exponent − Power a**b will give 10 to the power 20
= Simple assignment operator, assigns values from right side operands to left side operand. c = a + b will assign the value of a + b into c
+= Add AND assignment operator, adds right operand to the left operand and assign the result to left operand. c += a is equivalent to c = c + a
-= Subtract AND assignment operator, subtracts right operand from the left operand and assign the result to left operand. c -= a is equivalent to c = c - a
*= Multiply AND assignment operator, multiplies right operand with the left operand and assign the result to left operand. c *= a is equivalent to c = c * a
/= Divide AND assignment operator, divides left operand with the right operand and assign the result to left operand. c /= a is equivalent to c = c / a
%= Modulus AND assignment operator, takes modulus using two operands and assign the result to left operand. c %= a is equivalent to c = c % a
**= Exponent AND assignment operator, performs exponential (power) calculation on operators and assign value to the left operand. c **= a is equivalent to c = c ** a
= Simple assignment operator, assigns values from right side operands to left side operand. c = a + b will assign the value of a + b into c
+= Add AND assignment operator, adds right operand to the left operand and assign the result to left operand. c += a is equivalent to c = c + a
-= Subtract AND assignment operator, subtracts right operand from the left operand and assign the result to left operand. c -= a is equivalent to c = c - a
== Checks if the value of two operands are equal or not, if yes then condition becomes true. (a == b) is not true.
=== Used to test equality within a when clause of a case statement. (1...10) === 5 returns true.
!= Checks if the value of two operands are equal or not, if values are not equal then condition becomes true. (a != b) is true.
> Checks if the value of left operand is greater than the value of right operand, if yes then condition becomes true. (a > b) is not true.
< Checks if the value of left operand is less than the value of right operand, if yes then condition becomes true. (a < b) is true.
>= Checks if the value of left operand is greater than or equal to the value of right operand, if yes then condition becomes true. (a >= b) is not true.
<= Checks if the value of left operand is less than or equal to the value of right operand, if yes then condition becomes true. (a <= b) is true.
<=> Combined comparison operator. Returns 0 if first operand equals second, 1 if first operand is greater than the second and -1 if first operand is less than the second. (a <=> b) returns -1.
.eql? True if the receiver and argument have both the same type and equal values. 1 == 1.0 returns true, but 1.eql?(1.0) is false.
equal? True if the receiver and argument have the same object id. if aObj is duplicate of bObj then aObj == bObj is true, a.equal?bObj is false but a.equal?aObj is true.
=> Hashmap literal definition key1 => value1
& Binary AND Operator copies a bit to the result if it exists in both operands. (a & b) will give 12, which is 0000 1100
| Binary OR Operator copies a bit if it exists in either operand. (a | b) will give 61, which is 0011 1101
^ Binary XOR Operator copies the bit if it is set in one operand but not both. (a ^ b) will give 49, which is 0011 0001
~ Binary Ones Complement Operator is unary and has the effect of 'flipping' bits. (~a ) will give -61, which is 1100 0011 in 2's complement form due to a signed binary number.
<< Binary Left Shift Operator. The left operands value is moved left by the number of bits specified by the right operand. a << 2 will give 240, which is 1111 0000
>> Binary Right Shift Operator. The left operands value is moved right by the number of bits specified by the right operand. a >> 2 will give 15, which is 0000 1111
? : Conditional Expression If Condition is true ? Then value X : Otherwise value Y
.. Creates a range from start point to end point inclusive. 1..10 Creates a range from 1 to 10 inclusive.
... Creates a range from start point to end point exclusive. 1...10 Creates a range from 1 to 9.
=~ matches a String against a regular expression, returns the position/index if found else nil "Hello World" =~ /Wo/
!~ 'Does not contain’ "Hello World" !~ /Mo/




Notes

Print Hello World puts "Hello World!"
Print Character putc "!"
String concatenation str = "Billy" + " Bob"
Rem statement # puts "don't show this"
Multiple commands on one line test ="hello"; puts test
Comma in numbers 10,000 test =10_000;puts test
Using Quotes in strings puts "Quote: \"!"
puts %(Quote: "!)
Get user input name=gets
puts "Hello "+name
Remove a newline name=gets.chomp
Print variable puts "value = #{var}"
puts "value = " + var
v= var.to_s
Loop for i in 0..5
    puts i
end
Loop [1,2].each do |i|
  puts i
end
Loop Break for i in 0..10
    if i==5
        break
    end
    puts i
end
Loop Next
While i = 1
while i<=3 do
  puts i; i+=1
end
until begin
i+=1
end until i>4
Break while i  = 0
while true do
  puts i;   i+= 1
  break if i>5
end
If if var<3
    puts "Low"
elsif var<10
    puts "Mid"
else
    puts "High"
end
If Not unless 2==1
  puts 'Not True'
end
case case var
when 1
    puts "one"
when 2..4
    puts "2/3/4"
else
    puts "something"
end
function with arg def myfunc(param = "default",param2=123t)
end

myfunc(1,2)
Return a value def test
    return "Hello World"
end
def test2
    "Goodbye cruel world"
end
 
puts test
puts test2
set multiple objects to the same object a=b=c
create identifier as symbol object :name
Run a program Load "File.rb"
NULL / Empty object nil
INC / DEC V+=1
V-=1
Convert object to string to_s
convert integer to float
convert string to integer
9 / 5.to_f
"7".to_i
New object A= MyObj.new
Class definition class MyObj
  def initialize(name)
    @myname=name
    puts "Created "+name
  end
end

o = MyObj.new("Test")
function of the class #in MyObj
  def myname
    return @myname
  end

puts "My Name is "+o.myname
Local (instance var) @var
Class Var
(Shared across all instances of class)
class MyObj
  def initialize(name)
    @@myname=name
    puts "Created "+name
  end
  def name ;   return @@myname ;  end
end
o = MyObj.new("Test1") ; p = MyObj.new("Test2")
puts o.name ; puts p.name
Module
(Prevents namespace clashes)
module MyMod
    MyVar="Test"
end
puts MyMod::MyVar
Include file
(for modules)
require "/sources/mymod.rb"
puts MyMod::MyVar
Global var $myglobal=1
Constant
(upper case first letter
Const=1
Current object self
Random
Psuedorandom
rand
srand
File load File.open("testfile.txt") do |f|
    lines=f.readlines
    lines.each do |l|
        puts l
    end
end
Substring (mid) test="<<<Hello>>>"
puts test[3...8]
puts test[-3,3]
Length,
Uppercase
Lowercase
puts test.length
puts test.upcase
puts test.downcase
contains Instr puts test =~ /llo/
Multiline string definition str = <<TEST
Line 1
Line 2
Line 3
TEST
puts str
2D Array box=Array.new(3){ Array.new(3,'-') }
box[0][0]="["; box[0][2]="["; box[2][0]="]"; box[2][2]="]"
for y in 0..2
    for x in 0..2 ; putc box[x][y] ; end
    puts ""
end
Paralell assignment black,white=0,255



 

View Options
Default Dark
Simple (Hide this menu)
Print Mode (white background)

Top Menu
Youtube channel
ASM Programming Forums
GitHub

Z80 Content
Learn Z80 Assembly
Hello World
Advanced Series
Multiplatform Series
Platform Specific Series
ChibiAkumas Series
Grime Z80
Z80 Downloads
Z80 Cheatsheet
Sources.7z
DevTools kit
Z80 Platforms
Amstrad CPC
Elan Enterprise
Gameboy & Gameboy Color
Master System & GameGear
MSX & MSX2
Sam Coupe
TI-83
ZX Spectrum
Camputers Lynx

6502 Content
Learn 6502 Assembly
Advanced Series
Platform Specific Series
Grime 6502
6502 Downloads
6502 Cheatsheet
Sources.7z
DevTools kit
6502 Platforms
Apple IIe
Atari 800 and 5200
Atari Lynx
BBC Micro
Commodore 64
Super Nintendo (SNES)
Nintendo NES / Famicom
PC Engine
Vic 20

68000 Content
Learn 68000 Assembly
Platform Specific Series
Grime 68000
68000 Downloads
68000 Cheatsheet
Sources.7z
DevTools kit
68000 Platforms
Amiga 500
Atari ST
Neo Geo
Sega Genesis / Mega Drive
Sinclair QL (Quantum Leap)
X68000 (Sharp x68k)

My Game projects
Chibi Aliens
Chibi Akumas

Work in Progress
Learn 6809 Assembly
Learn 65816 Assembly
Learn 8086 Assembly (x86)
Wonderswan
MsDos
Learn ARM Assembly
Gameboy Advance
Risc Os

Misc bits
Ruby programming




If you want to support my work, please consider backing me on patreon!


Buy Chibi Akuma(s) from PolyPlay
Buy ChibiAkuma(s) games now!