Project1
标题: Ruby提问区 [打印本页]
作者: 冷峻逸 时间: 2015-8-5 21:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: SadSlime 时间: 2015-8-5 21:17
如何说明楼主是煞笔?
作者: 热峻逸 时间: 2015-8-5 21:18
我真想揍你 提问区被你吃了?
作者: 冷峻逸 时间: 2015-8-5 21:19
提示: 作者被禁止或删除 内容自动屏蔽
作者: 落雪鸦杀 时间: 2015-8-5 21:37
如何给函数“水”赋值“冷峻逸水的经验”?
作者: 赤炎 时间: 2015-8-5 21:39
该怎么描述沙发是大傻逼?
作者: 斜眼君 时间: 2015-8-5 21:46
本帖最后由 斜眼君 于 2015-8-5 21:52 编辑
如何给冷峻逸赋值为“大傻逼”?
作者: SadSlime 时间: 2015-8-5 23:06
【这回是认真的了】
.rb文件怎么编译成exe可执行文件
作者: LBQ 时间: 2015-8-5 23:09
本帖最后由 LBQ 于 2015-8-5 23:13 编辑
stackoverflow.com
ruby中文论坛
(怎么招都比这个好
作者: 塞巴斯特 时间: 2015-8-6 07:20
本帖最后由 塞巴斯特 于 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
话说人家是要把“冷峻逸水的经验”赋值给函数"水"
你定义个出来个内容是“冷峻逸水的经验”的函数"水"就没下文了闹哪样
作者: taroxd 时间: 2015-8-6 07:34
本帖最后由 taroxd 于 2015-8-6 09:24 编辑
LZ写一个这样的程序吧:
输入一段Ruby代码和这段代码的input,如果这段代码执行后会死循环,输出 true。如果这段代码能正常停止,输出 false。
作者: RyanBern 时间: 2015-8-6 08:34
楼上的太难了
LZ写一个这样的程序吧:
输入一段Ruby代码,如果这段代码里面的end不多也不少,输出true,否则输出false。
作者: KB.Driver 时间: 2015-8-6 09:01
新难题「版主们的リクエスト」
_(:3」∠)_
作者: Password 时间: 2015-8-6 10:35
楼上的都太难了
来个有实际意义的吧:输入一个具体的数学算式(例如18 / 4 或 (4/3) * 2),先判断结果是否是整数或有限小数,是的话直接输出结果,反之输出为最简分数。
作者: 寒冷魔王 时间: 2015-8-6 12:02
本帖最后由 寒冷魔王 于 2015-8-6 12:08 编辑
楼上的都太难了,顺便围观状元卖萌
好吧,就问一个简单的问题
ruby的Array似乎是不连续的。
每次索引求值(包括each)都会产生额外消耗。
VALUE
rb_ary_each(VALUE array)
{
long i;
volatile VALUE ary = array;
RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
for (i=0; i<RARRAY_LEN(ary); i++) {
rb_yield(RARRAY_AREF(ary, i));
}
return ary;
}
VALUE
rb_ary_each(VALUE array)
{
long i;
volatile VALUE ary = array;
RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
for (i=0; i<RARRAY_LEN(ary); i++) {
rb_yield(RARRAY_AREF(ary, i));
}
return ary;
}
包括Struct(而且速度还不如Array)
因此才有了Table(RGSS)
于是求助——
怎样在不借助外部的情况下,在Ruby内产生一个连续内存空间的数据结构?
使之可以迅速访问,不产生较多额外消耗?
作者: taroxd 时间: 2015-8-6 18:57
本帖最后由 taroxd 于 2015-8-6 19:47 编辑
寒冷魔王 发表于 2015-8-6 12:02
楼上的都太难了,顺便围观状元卖萌
好吧,就问一个简单的问题
送你个不管越界不检查参数的无责任数组(比原生Ruby Array慢,我会乱说?):
#include <ruby.h>
struct my_array {
size_t size;
VALUE *ptr;
};
static void
my_array_free(void *p) {
struct my_array *ptr = p;
if (ptr->size > 0)
free(ptr->ptr);
}
static VALUE
my_array_alloc(VALUE klass) {
VALUE obj;
struct my_array *ptr;
obj = Data_Make_Struct(klass, struct my_array, NULL, my_array_free, ptr);
ptr->size = 0;
ptr->ptr = NULL;
return obj;
}
static VALUE
my_array_init(VALUE self, VALUE size) {
struct my_array *ptr;
size_t requested = NUM2SIZET(size);
Data_Get_Struct(self, struct my_array, ptr);
ptr->ptr = (VALUE *)malloc(requested * sizeof(VALUE));
ptr->size = requested;
return self;
}
static VALUE
my_array_size(VALUE self) {
struct my_array *ptr;
Data_Get_Struct(self, struct my_array, ptr);
return SIZET2NUM(ptr->size);
}
static VALUE
my_array_get(VALUE self, VALUE index) {
struct my_array *ptr;
Data_Get_Struct(self, struct my_array, ptr);
return (ptr->ptr)[NUM2LONG(index)];
}
static VALUE
my_array_set(VALUE self, VALUE index, VALUE value) {
struct my_array *ptr;
Data_Get_Struct(self, struct my_array, ptr);
(ptr->ptr)[NUM2LONG(index)] = value;
return value;
}
#ifdef __cplusplus
extern "C" {
#endif
__declspec(dllexport)
void
Init_my_array(void) {
VALUE cMyArray;
cMyArray = rb_const_get(rb_cObject, rb_intern("MyArray"));
rb_define_alloc_func(cMyArray, my_array_alloc);
rb_define_method(cMyArray, "initialize", my_array_init, 1);
rb_define_method(cMyArray, "size", my_array_size, 0);
rb_define_method(cMyArray, "[]", my_array_get, 1);
rb_define_method(cMyArray, "[]=", my_array_set, 2);
}
#ifdef __cplusplus
}
#endif
#include <ruby.h>
struct my_array {
size_t size;
VALUE *ptr;
};
static void
my_array_free(void *p) {
struct my_array *ptr = p;
if (ptr->size > 0)
free(ptr->ptr);
}
static VALUE
my_array_alloc(VALUE klass) {
VALUE obj;
struct my_array *ptr;
obj = Data_Make_Struct(klass, struct my_array, NULL, my_array_free, ptr);
ptr->size = 0;
ptr->ptr = NULL;
return obj;
}
static VALUE
my_array_init(VALUE self, VALUE size) {
struct my_array *ptr;
size_t requested = NUM2SIZET(size);
Data_Get_Struct(self, struct my_array, ptr);
ptr->ptr = (VALUE *)malloc(requested * sizeof(VALUE));
ptr->size = requested;
return self;
}
static VALUE
my_array_size(VALUE self) {
struct my_array *ptr;
Data_Get_Struct(self, struct my_array, ptr);
return SIZET2NUM(ptr->size);
}
static VALUE
my_array_get(VALUE self, VALUE index) {
struct my_array *ptr;
Data_Get_Struct(self, struct my_array, ptr);
return (ptr->ptr)[NUM2LONG(index)];
}
static VALUE
my_array_set(VALUE self, VALUE index, VALUE value) {
struct my_array *ptr;
Data_Get_Struct(self, struct my_array, ptr);
(ptr->ptr)[NUM2LONG(index)] = value;
return value;
}
#ifdef __cplusplus
extern "C" {
#endif
__declspec(dllexport)
void
Init_my_array(void) {
VALUE cMyArray;
cMyArray = rb_const_get(rb_cObject, rb_intern("MyArray"));
rb_define_alloc_func(cMyArray, my_array_alloc);
rb_define_method(cMyArray, "initialize", my_array_init, 1);
rb_define_method(cMyArray, "size", my_array_size, 0);
rb_define_method(cMyArray, "[]", my_array_get, 1);
rb_define_method(cMyArray, "[]=", my_array_set, 2);
}
#ifdef __cplusplus
}
#endif
class MyArray; end
require_relative 'my_array'
a = MyArray.new(2)
a[0] = 1
p a[0]
class MyArray; end
require_relative 'my_array'
a = MyArray.new(2)
a[0] = 1
p a[0]
作者: chd114 时间: 2015-8-6 19:05
taroxd 发表于 2015-8-6 01:57
送你个不管越界不检查参数的无责任数组:
#include
水的好,楼主选择死亡(楼主已经死亡)
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |