Ruby C API字符串和符号是否相等?

基因

为Ruby gem编写C扩展名时,我需要测试参数值是否与已知的符号和字符串相等。

我知道你可以用

char *foo = "foo";
VALUE foo_string_value = rb_intern(foo);

然后将其转换为符号:

VALUE foo_sym_value = ID2SYM(foo_string_value);

我的问题是,是否我现在可以可靠地测试参数,其可以是符号或字符串,:foo或者'foo',与这些用C指针相等:

if (param == foo_string_value || param == foo_sym_value) {
  ...
}

换句话说,实习生是否保证指针相等也是符号和字符串的值相等?

如果这是错误的方法,那么进行此比较的正确方法是什么?

基因

我想通了。做我想要的事情的合理方法似乎是

VALUE square_sym = ID2SYM(rb_intern("square"));
VALUE kind_as_sym = rb_funcall(kind_value, rb_intern("to_sym"), 0);
if (square_sym == kind_as_sym) {
  ...
}

符号总是被嵌入并且具有唯一的值。字符串不是,不是。可以对它们进行内插以获得ID每个字符串唯一的s,但这在这种情况下无济于事。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++检查字符串元素是否相等

来自分类Dev

Ruby将字符串变成符号

来自分类Dev

C ++字符串/字符和重音符号

来自分类Dev

C ++字符串/字符和重音符号

来自分类Dev

检查字符串是否在Ruby中包含表情符号

来自分类Dev

Ruby C API-从ruby数组到C数组

来自分类Dev

Ruby / Rails-使用符号或字符串定义模型

来自分类Dev

Ruby FFI接口从字符串转换为const char *时的C ++字符编码

来自分类Dev

如何在字符串C#中找到000005000和5000相等

来自分类Dev

检查字符串C是否是A和B的交织

来自分类Dev

将符号插入字符串C ++

来自分类Dev

Ruby:在字符串插值期间将字符串转换为符号

来自分类Dev

如何使用mruby将C字符串传递给Ruby方法?

来自分类Dev

替换和替换 Ruby 中字符串的字符

来自分类Dev

Ruby字符串结构

来自分类Dev

Ruby编程练习以确定字符串是否是回文

来自分类Dev

Ruby检查字符串是否为空的方法?

来自分类Dev

Ruby:如何检查字符串是否为空?

来自分类Dev

字符串上的Ruby元帅与转换为字符串的符号上的元帅不同

来自分类Dev

C#中的字符串相等问题

来自分类Dev

字符串相等不起作用 C++

来自分类Dev

在Ruby和C ++中向左移16

来自分类Dev

在Ruby和C ++之间交换数据

来自分类Dev

Ruby Sha和哈希到C#

来自分类Dev

在Ruby和C ++之间交换数据

来自分类Dev

C 相等运算符是否比较两个字符串或其内存位置的文字值?

来自分类Dev

出现相同的 Ruby 字符串不相等,为什么?

来自分类Dev

如何从一个字符串读取数字和符号C ++

来自分类Dev

如何在Ruby中通过“ MARK”将字符串“ ab MARK c”拆分为[“ ab”,“ MARK”,“ c”]

Related 相关文章

热门标签

归档