Download presentation

Presentation is loading. Please wait.

Published bySeth Bingham Modified over 2 years ago

1
and other languages…

2
puts “yes” // global, method of Kernel Math.sqrt 2 // object Math, method sqrt message.length // object message, method length, no args a.each {|x| puts x} // object a, method each, associated block a[0] = a[1] // a.[](0), object a, method []=, arg 0 // a.[](1), object a,method [], arg 1 x + y // x.+(y) Compare to other languages overloaded operators

3
lvalue = rvalue lvalue must be address, rvalue must be value x = 1 x += 1 # but not x++. Abbreviated assignment pseudooperators x,y,z = 1,2,3 # parallel assignment x=y=0 # chained assignment, right assoc MAX = 5; MAX = 6 # constant not really constant… but Ruby gives warning

4
Goal: return array if it exists, or a new one results = results || [] results ||= [] Example of a Ruby idiom English idioms: pulling my leg, spill the beans Programming: means of expressing a recurring construct or simple task. Knowing the idioms associated with a programming language and how to use them is an important part of gaining fluency in that language (wikipedia) How does this work? Remember short-circuit evaluation? Caveat: lvalue must be nil or false

5
x,y = y,x # swap x = y; y = x # sequential, both now same value x = 1,2,3 # x = [1,2,3] x,y = [1,2] # same as x=1; y=2 a,b,c = 1,2 # a=1; b=2; c=nil x, *y = 1,2,3 # x=1; y=[2,3] * is called splat, can only have one per assignment *x, y = 1,2,3 # x=[1,2]; y=3

6
1-6 operators unary (1 operand) binary (2 operands) ternary (3 operands) infix - most prefix - Scheme Typical associativity rules Left to right, except assignment and **, which are right to left Sometimes unary operators associate right to left APL is different; all operators have equal precedence and all operators associate right to left, precedence and associativity rules can be overridden with parentheses would this be more or less confusing? typical precedence: parentheses unary operators ** (if the language supports it) *, /, % +, -

7
local variables and method names both start with lower case letter So how does Ruby know? If prior assignment, it’s a variable. Otherwise, method invocation.

8
Conditional Expressions C-based languages (e.g., C, C++) Also in Perl, JavaScript and Ruby An example: average = (count == 0)? 0 : sum / count Evaluates as if written like if (count == 0) average = 0 else average = sum /count

9
Language Concepts overloaded operators associativity infix vs prefix arity precedence lvalue/rvalue parallel assignment constants short-circuit evaluation conditional expressions Ruby Abbreviated assignment pseudooperators ||= idiom parallel assignment options splat

Similar presentations

OK

9/14/2015Assoc. Prof. Stoyan Bonev1 COS220 Concepts of PLs AUBG, COS dept Lecture 05 Components of Programming Languages, Part II Reference: R.Sebesta,

9/14/2015Assoc. Prof. Stoyan Bonev1 COS220 Concepts of PLs AUBG, COS dept Lecture 05 Components of Programming Languages, Part II Reference: R.Sebesta,

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google

Ppt on economic and labour force in india Ppt on applied operational research techniques Ppt on professional development Ppt on measuring area and volume Ppt on save environment slogans Ppt on leadership and change management Download ppt on mergers and acquisitions Ppt on kindness is contagious Electrical print reading ppt on ipad Ppt on l&t finance india