JumpStart Live (JSL)
Scope in programming defines when something (usually a variable) is visible to something else. In regards to scope of variables, the scope defines what knows about and can access that variable.
You will not need to know about most of these until a few weeks into Ada, but it's important to have a general idea about the different types of variables and their scope. You should understand local variables and their scope by the end of JumpStart Live.
| Variable type | Syntax | Scope |
|---|---|---|
| Class variable | @@name |
Visible to the class, and sub classes |
| Instance variable | @name |
Visible to a specific object, and the instance methods of that object |
| Global variable | $name |
Visible to everything in the file |
| Local variable | name |
Depends! |
- When you define a local variable inside of a block, it is not visible outside of that block
- In ruby, local variables created outside of a block, are visible to everything inside of that file. What does this print?
list = ["Goofy", "Minnie", "Daisy"]
name = "Donald"
list.each do |name|
name << " birthday! "
end
puts nameIn Ruby, if a variable is redefined inside a block, that is a new variable with scope only inside that block.
list = ["Goofy", "Minnie", "Daisy"]
greeting = ""
list.each do |name|
name << " birthday! "
greeting = name
end
puts greetingOutput:
Daisy birthday! -
In ruby, local variables created inside if statements, are visible outside of those if statements
x = gets.chomp.to_i if x > 0 y = 1 else y = -1 end puts y # No error, if statements are not considered blocks in Ruby
-
In ruby, local variables created inside of a block are not visible outside of those blocks
(1..3).each do |num| last = num end puts last # NameError: undefined local variable or method x
- Ada Scope Video (6:24)