直接在${}或{}中填入从0开始的数字,其中的数字代表方法参数的序号,比如{0}代表方法的第一个参数,{1}代表第二个参数,第n个参数引用用{n-1}表示(这里的n是数字,并不是变量名)
代表参数序号的数字只能是整数,不能是小数,并且不能是负数。
以上这种{数字}的形式是参数序号的简化语法,而有时候{表达式}中的数字如果和其它表达式结合起来参与计算,那此时它就不代表数字所对应的参数了,而只是纯粹的数字。如一下例子:
如果此时调用方法send(100),那么产生的url将是:
这时{}中的0代表的并不是参数num的值,而仅仅就是数字0,作为被调用toString()方法的整数对象。
若想此时也引用参数序号传入参数num的值,并且也参与toString()方法调用的运算,也是有办法的。
这时就要用到参数序号的非简化语法$ + 非负整数了。
这时我们所看到{$0.toString()}就我们所期望的num参数经过调用toString()方法最终返回的结果了。
说到这里,可能我们有些小伙伴就凌乱了。什么简化的?非简化的?不都是参数序号吗?怎么又变成数字了呢?
别急,其实要区分什么时候是数字,什么时候是参数序号,以及什么是简化参数序号,什么是非简化参数序号是很简单的,只要记住以下3条规则即可。
还有不要忘了参数序号只能是整数,并且不能是负的。
用参数序号方式比变量名方式更为简洁,因为不用定义@Var注解,也不用引用冗长的变量名,是目前比较推荐的引用方式。
不过它也有缺点,就是在参数较多的时候较难立刻对应起来,不够直观,比较影响代码可读性。所以还请根据场景和入参的多寡来决定用哪种引用方式。