11/08/2018, 21:09 
               
            Road to Ruby Silver (Part 1)
This is just some memos for who want to get Ruby Silver certificate. :) 1. 識別子 (identify) 命名規則 (rules of identify) 0..9 A..Z, a..z underscore Number is not placed in the first Do not same with key of ruby Sample of wrong cases: - 1_to_10 - abc? - abc-1 List of ...
This is just some memos for who want to get Ruby Silver certificate. :)
1. 識別子 (identify)
命名規則 (rules of identify)
- 0..9
 - A..Z, a..z
 - underscore
 - Number is not placed in the first
 - Do not same with key of ruby
 
Sample of wrong cases:
    - 1_to_10
    - abc?
    - abc-1
List of keys of ruby
1. nil 2. true 3. false 4. not 5. or 6. and 7. BEGIN 8. END 9. begin 10. end 11. do 12. then 13. yield 14. rescue 15. ensure 16. class 17. module 18. def 19. defined? 20. alias 21. undef 22. super 23. self 24. return 25. while 26. until 27. for 28. in 29. break 30. next 31. redo 32. retry 33. case 34. when 35. if 36. unless 37. else 38. elsif 39. __LINE__ 40. __FILE__ 41. __ENCODING__ (only 1.9)
Scope of variable, constant
| Type | Indentify rules | Scope | Value when do not init | 
|---|---|---|---|
| Locale variable | - first character: alphabeta or underscore | The nearest scope (where variable is defined) (1) | If defined in above → nil, else → raise exception | 
| Global variable | - first character: $ | All | nil | 
| Class variable | - first character: @@ | All instances of class can see (2) | raise exception | 
| Instance variable | - first character: @ | Only in that instance (3) | nil | 
| Constant | - First character must be upcase | (4) | raise exception | 
(1)
foo = 1 def call_variable puts foo end call_variable → raise exception
(2)
$foo = 1 def call_variable puts $foo end call_variable → 1
(3)
class Test
  @@class_var_1 = 100
  def instance_method_call_defined_variable
    puts @@class_var_1
  end
  def instance_method_call_undefined_variable
    puts @@class_var_2
  end
  class << self
    def class_method_call_defined_variable
      puts @@class_var_1
    end
  end
end
Test.new.instance_method_call_defined_variable → 100
Test.new.instance_method_call_undefined_variable → raise exception
Test.class_method_call_defined_variable → 100
(4)
module TestConstant
  TEST_CONSTANT = 1
  def instance_call_constant
    puts TEST_CONSTANT
  end
  class << self
    def class_call_constant
      puts TEST_CONSTANT
    end
  end
end
class TestConstantClass
  include TestConstant
end
TestConstantClass.class_call_constant → raise exception
TestConstant.class_call_constant → 1
TestConstantClass.new.instance_call_constant → 1
TestConstantClass::TEST_CONSTANT → 1
TestConstant::TEST_CONSTANT → 1
2. Numeric (数値)
All types in ruby
- Numeric (数値)
 - Boolean (論理値)
 - String (文字列)
 - Symbol (シンボル)
 - Array (配列)
 - Hash (ハッシュ)
 - Range (範囲)
 - Regular Expression (正規表現)
 - Command Output (コマンド出力) ???
 
2.1. Numeric
- 
Normal
3.0e2 → 300.0 3e2 → 300.0 3e-2 → 0.03 3321321321e100 → 3.321321321e+109 33333333e-110 → 3.3333333e-103
 Binary, octal, decimal, hexa (indicator - 基数指示子)
| Indicator | pattern | 
|---|---|
| Binary | 0b | 
| Octal | 0o or 0 | 
| Decimal | 0d | 
| Hexa | 0x | 
Example:
0b1001 → 9 0o70 → 56 070 → 56 0d20 → 20 0x1F → 31 0xf → 15 079 → raise error 0b20 → raise error 0xZ → raise error
- 
Use number with underscore
1_000_000_000 → 1000000000
 - 
Get string code of character → use 「?」
?R → "R" ?C-v → "u0016" # (Code of Control C + v) ?M-C-m → "x8D" # (Code of Alt + Control C + m)
 
2.2. Operators (演算子)
- +, - , *, /, %
 - ==, !=, <, >=
 - UFO Operator: <=>
 
    100 <=> 1 → 1
    1 <=> 1 → 0
    1 <=> 100 → -1
This operator is equal with below method:
    def <=>(a, b)
      return 0 if a == b
      a > b ? 1 : -1
    end
- =, +=, -=, +=, /=, **=
 
a = 5 a *= 2 → 10 a **= 5 → 3125 # = a^5
- ::, ?:
 
Abc::Constant
- .., ...
 
(1..9).to_a → [1,2,3,4,5,6,7,8] (1...9).to_a → [1,2,3,4,5,6,7,8]
- &&, and, ||, or, !, not
 
1 && 2 → 2 2 && 1 → 1 1 and 2 → 2 2 and 1 → 1 1 || 2 → 1 2 || 1 → 2 1 or 2 → 1 2 or 1 → 2Range of numeric classes
| Class name | Max | Min | 
|---|---|---|
| Fixnum | (2**(0.size * 8 -2) -1) | -(2**(0.size * 8 -2)) | 
| BigNum | ? | ? | 
| Float | Float::MAX | Float::MIN | 
Rational(0.5) → (1/2)