2010-07-25 01:23:37 -04:00
|
|
|
func = (first, second, rest...) ->
|
2010-01-24 23:40:45 -05:00
|
|
|
rest.join ' '
|
2009-12-31 17:50:12 -05:00
|
|
|
|
2010-07-25 01:23:37 -04:00
|
|
|
result = func 1, 2, 3, 4, 5
|
2009-12-31 17:50:12 -05:00
|
|
|
|
2010-02-16 19:45:25 -05:00
|
|
|
ok result is "3 4 5"
|
2009-12-31 19:52:13 -05:00
|
|
|
|
|
|
|
|
2010-07-25 01:23:37 -04:00
|
|
|
gold = silver = bronze = theField = last = null
|
2009-12-31 19:52:13 -05:00
|
|
|
|
2010-07-25 01:23:37 -04:00
|
|
|
medalists = (first, second, third, rest..., unlucky) ->
|
|
|
|
gold = first
|
|
|
|
silver = second
|
|
|
|
bronze = third
|
|
|
|
theField = rest.concat([last])
|
|
|
|
last = unlucky
|
2009-12-31 19:52:13 -05:00
|
|
|
|
2010-07-25 01:23:37 -04:00
|
|
|
contenders = [
|
2009-12-31 19:52:13 -05:00
|
|
|
"Michael Phelps"
|
|
|
|
"Liu Xiang"
|
|
|
|
"Yao Ming"
|
|
|
|
"Allyson Felix"
|
|
|
|
"Shawn Johnson"
|
|
|
|
"Roman Sebrle"
|
|
|
|
"Guo Jingjing"
|
|
|
|
"Tyson Gay"
|
|
|
|
"Asafa Powell"
|
|
|
|
"Usain Bolt"
|
|
|
|
]
|
|
|
|
|
2010-01-24 23:40:45 -05:00
|
|
|
medalists "Mighty Mouse", contenders...
|
2009-12-31 19:52:13 -05:00
|
|
|
|
2010-02-16 19:45:25 -05:00
|
|
|
ok gold is "Mighty Mouse"
|
|
|
|
ok silver is "Michael Phelps"
|
|
|
|
ok bronze is "Liu Xiang"
|
2010-03-17 14:41:09 -04:00
|
|
|
ok last is "Usain Bolt"
|
2010-06-12 19:05:13 -04:00
|
|
|
ok theField.length is 8
|
2010-02-20 18:25:36 -05:00
|
|
|
|
2010-03-17 12:25:04 -04:00
|
|
|
contenders.reverse()
|
2010-10-13 00:53:56 -04:00
|
|
|
medalists contenders.slice(0, 2)..., "Mighty Mouse", contenders.slice(2)...
|
2010-03-17 12:25:04 -04:00
|
|
|
|
|
|
|
ok gold is "Usain Bolt"
|
|
|
|
ok silver is "Asafa Powell"
|
|
|
|
ok bronze is "Mighty Mouse"
|
2010-03-17 14:41:09 -04:00
|
|
|
ok last is "Michael Phelps"
|
2010-06-12 19:05:13 -04:00
|
|
|
ok theField.length is 8
|
2010-02-20 18:25:36 -05:00
|
|
|
|
2010-04-03 10:39:32 -04:00
|
|
|
medalists contenders..., 'Tim', 'Moe', 'Jim'
|
2010-03-17 22:07:11 -04:00
|
|
|
ok last is 'Jim'
|
|
|
|
|
|
|
|
|
2010-10-01 18:17:35 -04:00
|
|
|
obj =
|
2010-04-03 10:39:32 -04:00
|
|
|
name: 'moe'
|
2010-02-20 18:25:36 -05:00
|
|
|
accessor: (args...) ->
|
|
|
|
[@name].concat(args).join(' ')
|
|
|
|
getNames: ->
|
2010-07-25 01:23:37 -04:00
|
|
|
args = ['jane', 'ted']
|
2010-02-20 18:25:36 -05:00
|
|
|
@accessor(args...)
|
2010-09-27 01:32:26 -04:00
|
|
|
index: 0
|
|
|
|
0: {method: -> this is obj[0]}
|
2010-02-20 18:25:36 -05:00
|
|
|
|
2010-04-03 10:39:32 -04:00
|
|
|
ok obj.getNames() is 'moe jane ted'
|
2010-09-27 01:32:26 -04:00
|
|
|
ok obj[obj.index++].method([]...), 'should cache base value'
|
2010-03-18 09:27:13 -04:00
|
|
|
|
2010-07-25 01:23:37 -04:00
|
|
|
crowd = [
|
2010-03-18 09:27:13 -04:00
|
|
|
contenders...
|
|
|
|
"Mighty Mouse"
|
|
|
|
]
|
|
|
|
|
2010-07-25 01:23:37 -04:00
|
|
|
bests = [
|
2010-03-18 09:27:13 -04:00
|
|
|
"Mighty Mouse"
|
2010-10-13 00:53:56 -04:00
|
|
|
contenders.slice(0, 4)...
|
2010-03-18 09:27:13 -04:00
|
|
|
]
|
|
|
|
|
|
|
|
ok crowd[0] is contenders[0]
|
|
|
|
ok crowd[10] is "Mighty Mouse"
|
|
|
|
|
|
|
|
ok bests[1] is contenders[0]
|
2010-04-24 15:57:15 -04:00
|
|
|
ok bests[4] is contenders[3]
|
|
|
|
|
|
|
|
|
|
|
|
# Finally, splats with super() within classes.
|
|
|
|
|
|
|
|
class Parent
|
|
|
|
meth: (args...) ->
|
|
|
|
args
|
|
|
|
|
|
|
|
class Child extends Parent
|
|
|
|
meth: ->
|
2010-07-25 01:23:37 -04:00
|
|
|
nums = [3, 2, 1]
|
2010-04-24 15:57:15 -04:00
|
|
|
super nums...
|
|
|
|
|
2010-06-29 21:03:50 -04:00
|
|
|
ok (new Child).meth().join(' ') is '3 2 1'
|
2010-05-08 12:44:54 -04:00
|
|
|
|
|
|
|
|
|
|
|
# Functions with splats being called with too few arguments.
|
2010-07-25 01:23:37 -04:00
|
|
|
pen = null
|
|
|
|
method = (first, variable..., penultimate, ultimate) ->
|
|
|
|
pen = penultimate
|
2010-05-08 12:44:54 -04:00
|
|
|
|
|
|
|
method 1, 2, 3, 4, 5, 6, 7, 8, 9
|
|
|
|
ok pen is 8
|
|
|
|
|
|
|
|
method 1, 2, 3
|
|
|
|
ok pen is 2
|
|
|
|
|
|
|
|
method 1, 2
|
|
|
|
ok pen is 2
|
2010-07-13 22:16:19 -04:00
|
|
|
|
|
|
|
|
|
|
|
# Array splat expansions with assigns.
|
2010-07-25 01:23:37 -04:00
|
|
|
nums = [1, 2, 3]
|
|
|
|
list = [a = 0, nums..., b = 4]
|
2010-07-13 22:16:19 -04:00
|
|
|
ok a is 0
|
|
|
|
ok b is 4
|
|
|
|
ok list.join(' ') is '0 1 2 3 4'
|
2010-10-10 12:34:22 -04:00
|
|
|
|
|
|
|
|
|
|
|
# Splat on a line by itself is invalid.
|
|
|
|
failed = true
|
|
|
|
try
|
|
|
|
CoffeeScript.compile "x 'a'\n...\n"
|
|
|
|
failed = false
|
|
|
|
catch err
|
|
|
|
ok failed
|