设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3070|回复: 16
打印 上一主题 下一主题

[原创发布] Ruby提问区

[复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止访问)

梦石
0
星屑
88
在线时间
631 小时
注册时间
2014-8-4
帖子
3600
跳转到指定楼层
1
发表于 2015-8-5 21:14:14 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

17
发表于 2015-8-6 19:05:59 | 只看该作者
taroxd 发表于 2015-8-6 01:57
送你个不管越界不检查参数的无责任数组:

#include

水的好,楼主选择死亡(楼主已经死亡)
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

16
发表于 2015-8-6 18:57:31 | 只看该作者
本帖最后由 taroxd 于 2015-8-6 19:47 编辑
寒冷魔王 发表于 2015-8-6 12:02
楼上的都太难了,顺便围观状元卖萌

好吧,就问一个简单的问题


送你个不管越界不检查参数的无责任数组(比原生Ruby Array慢,我会乱说?):

C 代码复制下载
  1. #include <ruby.h>
  2.  
  3. struct my_array {
  4.   size_t size;
  5.   VALUE *ptr;
  6. };
  7.  
  8. static void
  9. my_array_free(void *p) {
  10.   struct my_array *ptr = p;
  11.  
  12.   if (ptr->size > 0)
  13.     free(ptr->ptr);
  14. }
  15.  
  16. static VALUE
  17. my_array_alloc(VALUE klass) {
  18.   VALUE obj;
  19.   struct my_array *ptr;
  20.  
  21.   obj = Data_Make_Struct(klass, struct my_array, NULL, my_array_free, ptr);
  22.  
  23.   ptr->size = 0;
  24.   ptr->ptr  = NULL;
  25.  
  26.   return obj;
  27. }
  28.  
  29. static VALUE
  30. my_array_init(VALUE self, VALUE size) {
  31.   struct my_array *ptr;
  32.   size_t requested = NUM2SIZET(size);
  33.  
  34.   Data_Get_Struct(self, struct my_array, ptr);
  35.  
  36.   ptr->ptr = (VALUE *)malloc(requested * sizeof(VALUE));
  37.   ptr->size = requested;
  38.  
  39.   return self;
  40. }
  41.  
  42. static VALUE
  43. my_array_size(VALUE self) {
  44.   struct my_array *ptr;
  45.  
  46.   Data_Get_Struct(self, struct my_array, ptr);
  47.  
  48.   return SIZET2NUM(ptr->size);
  49. }
  50.  
  51. static VALUE
  52. my_array_get(VALUE self, VALUE index) {
  53.   struct my_array *ptr;
  54.  
  55.   Data_Get_Struct(self, struct my_array, ptr);
  56.  
  57.   return (ptr->ptr)[NUM2LONG(index)];
  58.  
  59. }
  60.  
  61. static VALUE
  62. my_array_set(VALUE self, VALUE index, VALUE value) {
  63.   struct my_array *ptr;
  64.  
  65.   Data_Get_Struct(self, struct my_array, ptr);
  66.  
  67.   (ptr->ptr)[NUM2LONG(index)] = value;
  68.   return value;
  69. }
  70.  
  71. #ifdef __cplusplus
  72. extern "C" {
  73. #endif
  74. __declspec(dllexport)
  75. void
  76. Init_my_array(void) {
  77.   VALUE cMyArray;
  78.  
  79.   cMyArray = rb_const_get(rb_cObject, rb_intern("MyArray"));
  80.  
  81.   rb_define_alloc_func(cMyArray, my_array_alloc);
  82.   rb_define_method(cMyArray, "initialize", my_array_init, 1);
  83.   rb_define_method(cMyArray, "size", my_array_size, 0);
  84.   rb_define_method(cMyArray, "[]", my_array_get, 1);
  85.   rb_define_method(cMyArray, "[]=", my_array_set, 2);
  86. }
  87. #ifdef __cplusplus
  88. }
  89. #endif


RUBY 代码复制
  1. class MyArray; end
  2.  
  3. require_relative 'my_array'
  4.  
  5. a = MyArray.new(2)
  6. a[0] = 1
  7. p a[0]

评分

参与人数 1星屑 +5 收起 理由
寒冷魔王 + 5 塞糖,状元加油

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1024
在线时间
1389 小时
注册时间
2010-8-9
帖子
3471
15
发表于 2015-8-6 12:02:56 | 只看该作者
本帖最后由 寒冷魔王 于 2015-8-6 12:08 编辑

楼上的都太难了,顺便围观状元卖萌

好吧,就问一个简单的问题
ruby的Array似乎是不连续的。
每次索引求值(包括each)都会产生额外消耗。
C 代码复制
  1. VALUE
  2. rb_ary_each(VALUE array)
  3. {
  4.     long i;
  5.     volatile VALUE ary = array;
  6.  
  7.     RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
  8.     for (i=0; i<RARRAY_LEN(ary); i++) {
  9.         rb_yield(RARRAY_AREF(ary, i));
  10.     }
  11.     return ary;
  12. }

包括Struct(而且速度还不如Array)
因此才有了Table(RGSS)

于是求助——
怎样在不借助外部的情况下,在Ruby内产生一个连续内存空间的数据结构?
使之可以迅速访问,不产生较多额外消耗?
SRPG on RM 项目研发组 正式成立。目前SRPG·RMVA系统进度88.8%。SMRC Kernel 进度90%
↖(^ω^)↗热烈庆祝~SMRC Ver5.1 SRPG战棋地图移动范围生成脚本正式发布~~
-----------------------------------------------------------------------------------------
SMRC具有高性能、高兼容、定制自由、使用方便的特点。
1.性能,100移动力轻松算出,无压力;
2.兼容,RGSS1-3通吃,效率保证;
3.支持移动形状定制,支持4方位、6方位、正方形或其他任意有移动规律的形状;
4.可以充当高性能寻路来使用。
【链接点此】
-----------------------------------------------------------------------------------------
【2016/01/06更新 | 改版】RM脚本编辑器Gemini
-----------------------------------------------------------------------------------------
回复 支持 反对

使用道具 举报

Lv4.逐梦者

送快递的水表员

梦石
10
星屑
4792
在线时间
3303 小时
注册时间
2012-6-27
帖子
7160

开拓者贵宾

14
发表于 2015-8-6 10:35:29 | 只看该作者
楼上的都太难了
来个有实际意义的吧:输入一个具体的数学算式(例如18 / 4 或 (4/3) * 2),先判断结果是否是整数或有限小数,是的话直接输出结果,反之输出为最简分数。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39475
在线时间
1916 小时
注册时间
2010-11-14
帖子
3319

R考场第七期纪念奖

13
发表于 2015-8-6 09:01:50 | 只看该作者
新难题「版主们的リクエスト」
_(:3」∠)_
用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9497
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

12
发表于 2015-8-6 08:34:20 | 只看该作者
楼上的太难了
LZ写一个这样的程序吧:
输入一段Ruby代码,如果这段代码里面的end不多也不少,输出true,否则输出false。
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

11
发表于 2015-8-6 07:34:47 | 只看该作者
本帖最后由 taroxd 于 2015-8-6 09:24 编辑

LZ写一个这样的程序吧:
输入一段Ruby代码和这段代码的input,如果这段代码执行后会死循环,输出 true。如果这段代码能正常停止,输出 false。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1891
在线时间
896 小时
注册时间
2010-11-13
帖子
406
10
发表于 2015-8-6 07:20:49 | 只看该作者
本帖最后由 塞巴斯特 于 2015-8-6 09:43 编辑

这种程度的问题XP VX VA随便哪个按F1都可以查到的。

另外水王大人如果是上进心燃烧了起来,不是为了水贴而是真想搞什么技术整合的话,请不要无视技术区的置顶帖。尽管置顶帖经常被无视

致各位想要学习研究 Ruby(RGSS) 的人 https://rpg.blue/thread-217670-1-1.html
上述地址里就有禾西这个丧尸大人发的Ruby笔记 https://rpg.blue/thread-69312-1-1.html



吹毛求疵什么的最喜欢了
反正只是水贴而已有什么关系
“表达式和表达式之间以分号(;)或换行分开。” —— 《RPG Maker XP (工程按下F1) - RGSS参考 - Ruby的语法 - 字句构造和表达式》



且不说【给函数“水”赋值“冷峻逸水的经验”】是不是这么写
def 水 "冷峻逸水的经验" end这么一段话放进脚本里只能是喜闻乐见的——
脚本'我怎么知道这是什么脚本'的 ? 行 发生了 SyntaxError。

正确使用姿势: def 水 ; "冷峻逸水的经验" ; end

话说人家是要把“冷峻逸水的经验”赋值给函数"水"
你定义个出来个内容是“冷峻逸水的经验”的函数"水"就没下文了闹哪样

点评

(゚Д゚≡゚Д゚)  发表于 2015-8-7 18:34
不愧是脑脑我想装一下都不行_(3  发表于 2015-8-6 23:47
其实方法名后面跟个括号就好了……他只是把后面方法内容当做参数解析了……  发表于 2015-8-6 22:01
另外,RGSS里一个“仍然不懂的问题”如果在“比较初级的问题”的范围内,世界各地都有答案。只要你肯百度甚至按F1耐心看一下。  发表于 2015-8-6 14:58
所以我的意思是,既然换不了行就不能用别的东西替代么(嘛,其实大家都明白的,上面也说了是吹毛求疵,还请水王不要太较真)  发表于 2015-8-6 14:51
想也一直在把精力放在自认为重要的事上,可能一会,可能一辈子不会填坑,失态
回复 支持 反对

使用道具 举报

Lv3.寻梦者

唯一的信徒

梦石
0
星屑
1665
在线时间
1357 小时
注册时间
2013-1-29
帖子
1637
9
发表于 2015-8-5 23:09:29 | 只看该作者
本帖最后由 LBQ 于 2015-8-5 23:13 编辑

stackoverflow.com

ruby中文论坛

(怎么招都比这个好

评分

参与人数 1星屑 +4 收起 理由
冷峻逸 + 4 我很赞同

查看全部评分

『我只是一个正在潜心修炼的渣乐师罢了』
Dear Time\(^o^)/~


假如上面的图片挂了的话麻烦各位去发个帖 @ 一下 orzFly 让他修复 deartime
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-14 10:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表