57 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // chaining
 | |
| 
 | |
| // load math.js (using node.js)
 | |
| const math = require('..')
 | |
| 
 | |
| // create a chained operation using the function `chain(value)`
 | |
| // end a chain using done(). Let's calculate (3 + 4) * 2
 | |
| const a = math.chain(3)
 | |
|   .add(4)
 | |
|   .multiply(2)
 | |
|   .done()
 | |
| print(a) // 14
 | |
| 
 | |
| // Another example, calculate square(sin(pi / 4))
 | |
| const b = math.chain(math.pi)
 | |
|   .divide(4)
 | |
|   .sin()
 | |
|   .square()
 | |
|   .done()
 | |
| print(b) // 0.5
 | |
| 
 | |
| // A chain has a few special methods: done, toString, valueOf, get, and set.
 | |
| // these are demonstrated in the following examples
 | |
| 
 | |
| // toString will return a string representation of the chain's value
 | |
| const chain = math.chain(2).divide(3)
 | |
| const str = chain.toString()
 | |
| print(str) // "0.6666666666666666"
 | |
| 
 | |
| // a chain has a function .valueOf(), which returns the value hold by the chain.
 | |
| // This allows using it in regular operations. The function valueOf() acts the
 | |
| // same as function done().
 | |
| print(chain.valueOf()) // 0.66666666666667
 | |
| print(chain + 2) // 2.6666666666667
 | |
| 
 | |
| // the function subset can be used to get or replace sub matrices
 | |
| const array = [[1, 2], [3, 4]]
 | |
| const v = math.chain(array)
 | |
|   .subset(math.index(1, 0))
 | |
|   .done()
 | |
| print(v) // 3
 | |
| 
 | |
| const m = math.chain(array)
 | |
|   .subset(math.index(0, 0), 8)
 | |
|   .multiply(3)
 | |
|   .done()
 | |
| print(m) // [[24, 6], [9, 12]]
 | |
| 
 | |
| /**
 | |
|  * Helper function to output a value in the console. Value will be formatted.
 | |
|  * @param {*} value
 | |
|  */
 | |
| function print (value) {
 | |
|   const precision = 14
 | |
|   console.log(math.format(value, precision))
 | |
| }
 |