首页 文章
  • 7 votes
     answers
     views

    为什么BigFloat.to_s不够精确?

    我不确定这是不是一个错误 . 但我一直在玩 big ,我无法理解为什么这段代码会这样运作: https://carc.in/#/r/2w96 Code require "big" x = BigInt.new(1<<30) * (1<<30) * (1<<30) puts "BigInt: #{x}" x = BigF...
  • 0 votes
     answers
     views

    水晶郎:类型算术,属于联盟?

    我正在尝试实现一个功能: def foo(t : Class) if t in Int::Signed # ... end end 但是如何实现 t in Int::Signed ? Int::Signed 我知道 is_a?(Int::Signed) 但这里的参数类型为 Type . 谢谢 .
  • 4 votes
     answers
     views

    Crystal会存储任何敏感信息吗?

    如果开发人员编译Crystal程序,二进制文件将存储哪些元数据以及如何删除任何敏感信息?敏感是指设备标识符,本地IP地址或其他任何内容 .
  • 2 votes
     answers
     views

    什么是Crystal Lang中的超类不匹配?

    我正在尝试用Kemal实现一个限速处理程序 . 我有一个类 RateLimiter ,它继承了类 Kemal::Handler . 在编译时我得到错误: Error in src/rate_limiter.cr:5: superclass mismatch for class RateLimiter (Kemal::Handler for Reference) 我是Crystal的新手,对我来说...
  • 1 votes
     answers
     views

    检查宏中的节点类型

    从#5028 我如何知道宏中的类型类?例如,这个: class A Const = 42 macro is_int(val) {% p "#{val} is int: #{val.is_a?(Int32)}" %} end is_int(Const) end 打印 false .
  • 13 votes
     answers
     views

    是否有相当于Pry for Crystal?

    我是水晶语言的新手 . 我想知道Crystal中是否存在类似Ruby的Pry的调试器? 这意味着您可以在此行的程序停止执行时输入类似“binding.pry”的代码,并让您控制变量 .
  • 4 votes
     answers
     views

    Crystal C绑定:返回类型char *

    我有这个签名的功能: const char* get_version(); 我的声明是: fun get_version(): LibC::Char* 并使用它: version = MyLib.get_version() puts version # how to convert to String? 如何管理返回字符串?我是否还必须导入strlen来测量C字符串的长度并手动将其转换为Cr...
  • -1 votes
     answers
     views

    未知类型的方法参数

    我正在尝试编写一个实用程序库,它试图在任意对象类型上调用方法 . 在ruby中,我会做类似的事情: def foo(object) object.public_send(:bar) rescue NoMethodError raise "Method not defined on object" end foo(instance_of_my_arbitrary_cla...
  • 2 votes
     answers
     views

    编译程序的必需参数?

    有没有办法为水晶程序做必要的论证?例如 ./myprog ~/Music -r 代替 ./myprog -d ~/Music -r 所以如果没有[directory]参数,我的程序就不会运行 . 现在使用“option_parser”,只能做-arguments .
  • 2 votes
     answers
     views

    为什么Crystal不能在初始化器中推断出这种类型?

    我有以下代码: class Triangle def initialize(@sides : Array(Int32)) @set = Set.new(@sides) end end 但是我得到一个编译器错误,它给了我: Can't use Set(T) as the type of instance variable @set of Triangle, use a more s...
  • 3 votes
     answers
     views

    如何为方法参数设置默认值

    def my_method(options = {}) # ... end # => Syntax error in ./src/auto_harvest.cr:17: for empty hashes use '{} of KeyType => ValueType' 虽然这是有效的Ruby似乎不在Crystal中,但我怀疑是因为打字 . 如何告诉编译器我想默认为空哈希?
  • 7 votes
     answers
     views

    如何为JSON解析指定数据类型?

    我有一个JSON响应,它是一个哈希数组: [{"project" => {"id" => 1, "name" => "Internal"}, {"project" => {"id" => 2, "name" => &quo...
  • 1 votes
     answers
     views

    迭代宏中的联合类型

    有没有办法迭代宏中的联合类型中的类型?这是我的尝试: alias MyType = Int32 | String {% for type in MyType.union_types %} #=> undefined method 'union_types' for TypeNode of type MyType (must be a union type) ... {% end %}...
  • 3 votes
     answers
     views

    如何在C绑定中使用数组类型?

    我正在尝试移植此代码: struct SoundIoChannelLayout { const char *name; int channel_count; enum SoundIoChannelId channels[SOUNDIO_MAX_CHANNELS]; }; 但我不知道如何定义 channels 的类型,我知道我可以't use a pointer becau...
  • 3 votes
     answers
     views

    Crystal中的JSON :: Any和JSON :: Type有什么区别?

    在Crystal语言中,JSON::Any和JSON::Type有什么区别?这种类型的用例有哪些?
  • 4 votes
     answers
     views

    如何将JSON :: Any映射到Crystal语言的自定义对象?

    如何将解析后的JSON映射为 JSON::Any 类型到自定义对象? 就我而言,我正在聊聊客户端 . Chat API可以使用以下JSON响应请求: {"ok" => true, "result" => [{"update_id" => 71058322, "message" =&gt...
  • 4 votes
     answers
     views

    JSON.mapping宏如何与union类型的参数一起使用?

    在 JSON.mapping documentation明确声明 type 属性的值应该是单一类型 . 但是,在实践中,联合类型也有效: json1 = %q({"ok": true, "result": [{"type": "update", "id": 1}, {"type&quot...
  • 0 votes
     answers
     views

    迭代整数值Crystal的次数

    我是Crystal的新手,正在编写一个测试项目来帮助我强化Crystal内部的一些原则 . 我需要能够在循环中迭代x次 . x是任意的,不依赖于数组长度,而是程序执行时的设定值 . What's the Crystal way to do this? 我知道我可以设置一个 while 并获得我正在寻找的行为,但是有没有一种特定的方法可以在Crystal中实现? 例如,在Ruby中,你可以说 x....
  • 1 votes
     answers
     views

    如何处理Crystal中的冗余类型?

    我正在使用crystal language,到目前为止一直很棒 . 不幸的是,我觉得 my 代码变得有点太乱了,到处都是类型 . 例如: # ---------=====----++--- # Grab characters # ---------=====----++--- def handle_character_list(msg, client) result = {} ...
  • 0 votes
     answers
     views

    Crystal-Lang - 交叉宏宏变量

    所以我正在构建一个数据类型,我想, optional auto-casting . The last question I asked is related to this also. 我目前拥有的代码可以在下面找到: class Test(T) @@auto_cast = false def initialize(var : T) @var = var end de...
  • 1 votes
     answers
     views

    Crystal lang:理解方法返回类型的Void

    它没有在文档中记录 . 但通过实验,我发现将返回类型的方法键入为Void,取消“最后一个语句返回”(这很好),使其返回Nil . def foo; "baz"; end #=> "baz" : String def foo : Void; "baz"; end #=>无 def foo : Nil; "baz&quo...
  • 2 votes
     answers
     views

    #clone和#dup之间有什么区别

    所以我一直在学习没有红宝石背景的水晶,并注意到api文档有 #dup 和 #clone 基本上复制数组 . 这两者究竟有什么区别? api说 #dup 浅复制数组,而 #clone 深复制所述数组 . 我不确定究竟是什么,我应该使用哪一个 .
  • 2 votes
     answers
     views

    什么是Crystal Lang的触发器?

    我在组织的网站上阅读了关于水晶语言书中的Procs的文档 . 什么是proc?我得到你定义参数和返回类型,并使用调用方法来调用proc,这让我觉得它是一个函数 . 但为什么要使用proc?它是为了什么?
  • 4 votes
     answers
     views

    如何获取传递给块的参数的名称?

    在Ruby中,您可以这样做: prc = lambda{|x, y=42, *other|} prc.parameters #=> [[:req, :x], [:opt, :y], [:rest, :other]] 特别是,我有兴趣能够获得上述示例中 x 和 y 的参数名称 . 在Crystal中,我有以下情况: def my_method(&block) # I would...
  • 6 votes
     answers
     views

    如何在Crystal中创建具有可变参数的Proc?

    我想将参数传递给Proc,如使用splat,但它返回错误 wrong number of block arguments (1 for 0) $callbacks = {} of String => Array(->) def add_callback(event, &block) begin $callbacks[event.to_s] << blo...
  • 7 votes
     answers
     views

    如何生成没有依赖项的Crystal可执行文件?

    我正在Crystal编写一个程序,我打算编译并移动到其他系统执行 . 理想情况下,它应该没有依赖关系,因为目标系统将是linux的全新安装 . 遗憾的是,我无法绕过libc依赖,所以我可能必须在拥有我希望定位的最低版本libc的系统上编译可执行文件 . 我认为它应该是向前兼容的 . 但是,我对libssl有困难 . Debian Wheezy的默认安装似乎没有附带libssl,因此运行我的可执行...
  • 2 votes
     answers
     views

    Crystal方法返回多个值

    Crystal-lang方法可以返回具有特定类型的多个值吗? 我知道它可以用这种方式实现: def my_method(arg_1 : Int, arg_2 : String) : Tuple return arg_1, arg_2 end res_1, res_2 = my_method(1, "1") 但如果我这样做,它也有效: result = my_method...
  • 1 votes
     answers
     views

    设置默认属性和属性类型

    我想定义一个类 Person ,其类型为Int32的 age 属性,并在未提供的情况下为其指定默认值 . 我知道如何做第一个: class Person def initialize(@age : Int32) end end 第二个: class Person def initialize(@age = 0) end end 但不是如何做到这两点 . 这可能吗...
  • 1 votes
     answers
     views

    通用哈希作为参数?

    我正在尝试实现一个接受通用有效负载的类,然后将其转换为JSON: require "json" class Response alias Payload = Hash(Symbol | String, String | Bool | Int32 | Int64 | Float32 | Float64 | Nil) @payload : Payload def i...
  • 1 votes
     answers
     views

    如何在Crystal lang中将.match的结果作为字符串值访问

    在许多其他编程语言中,有一个函数将正则表达式作为参数,并返回字符串值数组 . 这适用于Javascript和Ruby . 然而,晶体中的 .match 确实1)似乎不接受全局标志和2)它不返回数组而是返回类型 Regex::MatchData 的结构 . (https://crystal-lang.org/api/0.25.1/Regex/MatchData.html) 以下代码为例: str ...

热门问题