上一篇文章
《julia函数参数(1)参数的【可选】和【默认值】》
https://www.jianshu.com/p/39acc43b5596
讲了可选参数的函数及其用法。
现在讲另外一种情况:假如你的函数有多个可选参数,你如何处理?
先以股票卖出举一个例子:
我以前有一个函数,它的功能是卖出持有的某只股票,并且是全部卖出,当时没有考虑比如只卖出1/2,或者1/3等情况。
当时原型如下:
function sell(code)
#
end
现在我要更新功能,如何处理呢,增加一个变量amount,默认值 设为1,1 = 全部卖出
function sell(code,amount = 1)
#
end
后来在处理期货的时候,sell功能不够用了,为啥,期货涉及【平今仓】,【平昨仓】,那又得增加一个默认值的参数,例如:
function sell(code,amount = 1,pc_type = "平今")
#
end
有多个可选参数的时候,一旦其中七个可选参数要指定值,那么其它可选参数也得指定值,能不能,我只需要指定一个可选参数的值,解决方法就是用关键字参数。
定义如下,注意,关键字参数放在分号【;】后面
function sell(code ; amount = 1,pc_type = "平今")
#
end
举例
#可选参数
function test1(name,age,sex = "男") #sex是可选参数
(name," ",age," ",sex)
end
test1("李四",60)
#可选参数
function test2(name,age,sex = "男",country = "大清") #sex 和 nation都是可选参数
(name," ",age," ",sex," ",country)
end
test2("李四",60,"民国")
#关键字参数
function test3(name,age;sex = "男",country = "大清") #sex 和 nation都是可选参数
(name," ",age," ",sex," ",country)
end
#关键字参数函数的调用:关键字参数可指定其中一个或者多个,非关键字的参数不能省略,函数自动按顺序拾取非关键字参数值
test3("李四",60)
test3("李小四",60,country = "民国")
test3(sex = "男","亨拜登",50,country = "美利坚")
test3(sex = "男","亨拜登",country = "美利坚",50)
运行结果
image.png总结
当一个函数有多个可选参数的时候,采用关键字参数
网友评论