tomchenri的个人空间 https://blog.eetop.cn/1768370 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

@rest、@optional、@key用法示例

热度 2已有 754 次阅读| 2022-1-25 10:06 |个人分类:skill语言|系统分类:其他

@rest定义 不限数量 的输入

@optional 定义 可有可无 的输入,需要按顺序

@key 定义 可有可无 的输入,需要指定参数名

注意 :语法上 @optional 和 @key 不能同时使用,功能上 @rest 和 @optional 同时使用会存在矛盾。


@rest用法例子:

procedure( myAdd( @rest args ) ; 修饰符号写在被修饰参数的前面

  prog(( result )

    result = 0

    foreach( num args

      printf( "myAdd: %n + %n\n" result num )

      result += num

    )

    return( result )

  )

); myAdd

运行结果:

myAdd( 1 2 3 )

; myAdd: 0 + 1

; myAdd: 1 + 2

; myAdd: 3 + 3

; => 6


@optional用法例子:

procedure( myCalc( args @optional opt("+") )  ; 参数后面的括号内写上默认值,也可以写成 ( opt "+" )

  prog(( result )

    result = car( args )

    args   = cdr( args )

    foreach( num args

      printf( "myCalc: %n %s %n ; " result opt num )

      case(opt

        ("+"  result += num )

        ("-"  result -= num )

        ("*"  result *= num )

        ("/"  result /= num )

      ); 按照不同的 opt 执行不同的操作

    )

    return( result )

  )

); myCalc

运行结果:

myCalc( list( 1 2 3 ))

; myCalc: 1 + 2 ; myCalc: 3 + 3 ; 

; => 6


myCalc( list( 1 2 3 ) "-")

; myCalc: 1 - 2 ; myCalc: -1 - 3 ; 

; => -4


myCalc( list( 1 2 3 ) "*")

; myCalc: 1 * 2 ; myCalc: 2 * 3 ; 

; => 6


myCalc( list( 1.0 2 3 ) "/")

; myCalc: 1.000000 / 2 ; myCalc: 0.500000 / 3 ; 

; => 0.1666667



@key用法例子:

procedure( myCalc( @key args opt("+") )

  prog(( result )

    result = car( args )

    args   = cdr( args )

    foreach( num args

      printf( "myCalc: %n %s %n ; " result opt num )

      case(opt

        ("+"  result += num )

        ("-"  result -= num )

        ("*"  result *= num )

        ("/"  result /= num )

      ); 按照不同的 opt 执行不同的操作

    )

    return( result )

  )

); myCalc

运行结果:

myCalc( ?opt "+" ?args list( 1 2 3 ))

; myCalc: 1 + 2 ; myCalc: 3 + 3 ; 

; => 6


2

点赞

刚表态过的朋友 (2 人)

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 5

    总排名
  • 4

    关注
  • 65

    粉丝
  • 8

    好友
  • 160

    获赞
  • 21

    评论
  • 298

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-22 21:42 , Processed in 0.014912 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部