IronScheme:你如何'或'枚举条目

时间:2015-08-22 23:39:51

标签: ironscheme

你如何'或'在IronScheme中枚举条目,例如:

(import                                                                                                                                               
  (rnrs)                                                                                                                                               
  (ironscheme clr))                                                                                                                                    

(clr-using System.Reflection)                                                                                                                         

(define public-class-attributes                                                                                                                       
  (bitwise-ior                                                                                                                                        
    (clr-static-field-get                                                                                                                              
      TypeAttributes Public)                                                                                                                            
    (clr-static-field-get                                                                                                                              
      TypeAttributes Class)))                                                                                                                           

(display public-class-attributes)

这会导致错误,我在文档中找不到替代方法。

1 个答案:

答案 0 :(得分:2)

我不确定您的用例是什么,但正如评论中所提到的,当使用clr-call时,符号列表可用于OR< d enum。示例here

在内部,编译器将通过调用Helpers.SymbolToEnum<T>()来包装列表。

注意:案例被忽略。

以小例子说明:

C#代码:

[Flags]
enum Foo
{
  Bar = 1,
  Baz = 2
}

class AType 
{
  static void Kazaam(Foo foo) { ... }
}

计划代码:

; same as Bar | Baz
(clr-static-call AType Kazaam '(Bar Baz))

; single value
(clr-static-call AType Kazaam 'Baz)
; same thing
(clr-static-call AType Kazaam '(Baz))

; no value (iow zero)
(clr-static-call AType Kazaam '())

如果这些只是简单的标志,列表就足够了,否则你可以在enum中将enum-set重新定义为允许许多集合操作的enum-set->list。最后,您只需使用chmod +x slamdata_unix_2_1_8.sh 将列表作为参数传递,如上所示。