我知道你可以使用split函数从字符串创建一个数字列表:
let Items = '1,3,5,7'
let MyList = split(Items, ',')
echo MyList --> [1,3,5,7]
但如何使用range()
?
这不起作用(尾随字符错误):
let Items = '1,100,2'
let MyList = range(eval(Items))
echo MyList --> trailing characters error
答案 0 :(得分:4)
eval(Items)
没有任何意义。你可能想要这样的东西:
:let Items='1,100,2'
:let MyList=split(Items,',')
echo range(MyList[0],MyList[1],MyList[2])
答案 1 :(得分:1)
要使用eval,您必须有一个表示("包含")完整表达式的字符串。如果要将Items
字符串用作range
函数的参数,则可以连接表示range
调用的字符串并对其进行评估,如下所示:
let Items = '1,100,2'
let MyList = eval( 'range(' . Items . ')' )
我不认为这样做是个好主意,但这是可能的。
对于列表和词组, eval
与string
相反,因此使用split(Items)
获取列表的替代方法是eval('[' . Items . ']')
。但拆分字符串似乎更容易,也更安全。