Home Comments Thread
New Thread

1 Comment

giscus-bot giscus-bot 2022-12-17 00:41:23
访客 *大鹏* @ 2017-01-30 12:22:14 写道:

我就一直不理解,为什么switch()不能把这种情况收进去呢?

@pzhaonet

yihui yihui 2022-12-17 00:41:24

switch() 对应的是 if 的特例,也就是 if (x == 'A') 怎样 else if (x == 'B') 又怎样。是判断一个变量取值是否等于什么值然后执行某些分支语句。一般的 if 语句不太方便直接翻译成 switch 语句。R 里面的 switch() 只是一个普通函数而已,并不是一个特殊的语法结构;其实 if 也是一个函数,这跟其它多数语言都不太一样。

——原帖发布于 2017-01-30 15:19:28

giscus-bot giscus-bot 2022-12-17 00:41:25
访客 *大鹏* @ 2017-01-30 15:46:43 写道:

谢谢你的解释。if的空白区域是很烦人,return这个方案确实很棒。我的意思是说,既然有了if函数,何必再有个switch函数(可能就是为了节省空白?);既然好心弄出来个switch函数,为何不把好人做到底,让switch能支持更多的特例,比如:

switch(x,
(-Inf, 0) = -x,
[0, 3) = x^2,
[3, Inf) = exp(x))

我一直想自定义这样一个函数,可惜自己不会写。现在有了你这个return方案,用不着写了。

@pzhaonet

yihui yihui 2022-12-17 00:41:26

这应该是可以用魔法实现的,时间有限我就不展开了。

——原帖发布于 2017-01-30 16:17:56

giscus-bot giscus-bot 2022-12-17 00:41:27
访客 *大鹏* @ 2017-01-30 19:06:38 写道:

“我有个绝妙的证明,但这书空白太小写不下。”上次我已经被你们这种人欺骗了三百年,这回不上当了。

@pzhaonet

Sign in to join the discussion

Sign in with GitHub