📄 00 - introduction
字号:
require 'example'e = Example::Class.newe.print_string("Hello World\n")# Hello World#---# example.rbmodule Example class Class def print_string(s) print s end endend#---#include <ruby.h>#include <stdio.h>static VALUE rb_mExample;static VALUE rb_cClass;static VALUEprint_string(VALUE class, VALUE arg){ printf("%s", RSTRING(arg)->ptr); return Qnil;}voidInit_example(){ rb_mExample = rb_define_module("Example"); rb_cClass = rb_define_class_under(rb_mExample, "Class", rb_cObject); rb_define_method(rb_cClass, "print_string", print_string, 1);}#---# extconf.rbrequire 'mkmf'dir_config('example')create_makefile('example')#---$ ls example.c extconf.rb$ ruby extconf.rbcreating Makefile$ makegcc -fPIC -Wall -g -O2 -fPIC -I. -I/usr/lib/ruby/1.8/i486-linux -I/usr/lib/ruby/1.8/i486-linux -I. -c example.cgcc -shared -L"/usr/lib" -o example.so example.o -lruby1.8 -lpthread -ldl -lcrypt -lm -lc$ lsMakefile example.c example.o example.so extconf.rb#---require 'example'e = Example::Class.newe.print_string("Hello World\n")# Hello World#---static VALUEwrite_string(VALUE object, VALUE str){ if (rb_respond_to(object, rb_intern("<<"))) { rb_funcall(object, rb_intern("<<"), 1, str); } return Qnil;}#---def write_string(object, str) object << str if object.respond_to?('<<') return nilend#---
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -