User Tools

Site Tools


at:tutorial:basic

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
at:tutorial:basic [2020/02/09 21:39] elisagat:tutorial:basic [2020/02/09 21:47] elisag
Line 226: Line 226:
 >> 21 >> 21
 </code> </code>
 +
  
 ==== Optional Parameters ==== ==== Optional Parameters ====
Line 239: Line 240:
 </code> </code>
  
-As is customary in languages with the above parameter passing semantics, AmbientTalk requires mandatory parameters to be defined //before// optional parameters, which should in turn be defined //before// a variable-argument parameter, if any.+As is customary in languages with the above optional arguments, AmbientTalk requires mandatory parameters to be defined //before// optional parameters, which should in turn be defined //before// a variable-argument parameter, if any. 
 + 
 +Let us show how to use optional arguments to define an auxilary function that creates matrices as follows: 
 + 
 +<code> 
 +def makeMatrix(n, m := n, init := { |i,j| 0}){ 
 +  def [i,j] := [0,0]; 
 +  def makeCol(i,j) { 
 +     def col[m] { j := j + 1; init(n,m) } 
 +  }; 
 +  def matrix[n] { i := i + 1; makeCol(i,j)} 
 +}; 
 +def b := makeMatrix(2,4, {|i,j| object: { def occupied := false }}); 
 +>((b[2])[4]).occupied := true 
 +>>true 
 +>(h[2]).each: {|e| system.print(" " + e.occupied)} 
 +>> false false false true 
 +>def c := makeMatrix(3); 
 +>>[[0, 0, 0], [0, 0, 0], [0, 0, 0]] 
 +>c[1] := [1,2,3] 
 +>>[1, 2, 3] 
 +>c 
 +>>[[1, 2, 3], [0, 0, 0], [0, 0, 0]] 
 +</code>
  
 ===== Closures ===== ===== Closures =====
at/tutorial/basic.txt · Last modified: 2020/02/09 22:05 by elisag