57件ヒット
[1-57件を表示]
(0.121秒)
キーワード
-
fiddle
/ import (12) -
rdoc
/ parser / c (12) - set (9)
- tsort (12)
- yaml (12)
検索結果
-
tsort (26127.0)
-
tsort はトポロジカルソートと強連結成分に関するモジュールを提供します。
...tsort はトポロジカルソートと強連結成分に関するモジュールを提供します。
=== Example
//emlist[][ruby]{
require 'tsort'
class Hash
include TSort
alias tsort_each_node each_key
def tsort_each_child(node, &block)
fetch(node).each(&block)
end
end
{1=>[2, 3],......=>[]}.tsort
#=> [3, 2, 1, 4]
{1=>[2], 2=>[3, 4], 3=>[2], 4=>[]}.strongly_connected_components
#=> [[4], [2, 3], [1]]
//}
=== より現実的な例
非常に単純な `make' に似たツールは以下のように実装できます。
//emlist[][ruby]{
require 'tsort'
class Make
def initialize......default = []
end
def rule(outputs, inputs=[], &block)
triple = [outputs, inputs, block]
outputs.each {|f| @dep[f] = [triple]}
@dep[triple] = inputs
end
def build(target)
each_strongly_connected_component_from(target) {|ns|
if ns.length != 1
fs = ns.delete_if {... -
fiddle
/ import (6037.0) -
fiddle ライブラリのための高レベルインターフェースを提供するライブラリです。
...iddle/import ライブラリを使います。
主な使い方は fiddle も参照してください。
=== 高度な使用法
==== ○○の配列を関数に渡したい
例えば与えられた長さ len の double の配列の和を計算する関数
double sum(double *arry, int len);
が......たとします。これを呼び出したい場合は以下のように Array#pack を使用します。
require 'fiddle/import'
module M
extend Fiddle::Importer
dlload './libsum.so'
extern 'double sum(double*, int)'
end
p M.sum([2.0, 3.0, 4.0].pack('d*'), 3) #=> 9.0
また与え......void first_char(char **s, char *buf, int len)
があったとします。これを呼び出すにも以下のように Array#pack を使用します。
require 'fiddle/import'
module M
extend Fiddle::Importer
dlload './libstrfirst.so'
extern 'void first_char(char **, char *, int)'
end... -
set (6007.0)
-
集合を表す Set クラスと、取り出し順序を保証した SortedSet クラスを提供 します。
...を表す Set クラスと、取り出し順序を保証した SortedSet クラスを提供
します。
集合とは重複のないオブジェクトの集まりです。
Array の持つ演算機能と Hash の高速な検索機能を合わせ持ちます。
Set および SortedSet は内部記......bject#eql? と Object#hash を用いて判断されます。
したがって、集合の各要素には、これらのメソッドが適切に定義されている
必要があります。
Set クラスでは、集合要素を取り出す際の順序は保証されません。
一方、SortedSet......れます。
また、set ライブラリを require すると Enumerable モジュールが
拡張され、Enumerable#to_set の形で集合オブジェクトを生成できる
ようになります。
=== 注意事項
集合オブジェクトに対する taint, untaint, freeze の各
メソッ......Set クラスを提供します。
集合とは重複のないオブジェクトの集まりです。
Array の持つ演算機能と Hash の高速な検索機能を合わせ持ちます。
Set は内部記憶として Hash を使うため、集合要素の等価性は
Object#eql? と Object#hash......定義されている
必要があります。
Set クラスでは、集合要素を取り出す際の順序は保証されません。
また、set ライブラリを require すると Enumerable モジュールが
拡張され、Enumerable#to_set の形で集合オブジェクトを生成でき......事項
集合オブジェクトに対する taint, untaint, freeze の各
メソッドの効果は、内部記憶として保持するハッシュにも適用されます。
集合オブジェクトおよびその内部記憶にセットされた taint 情報は、
dupおよび clone メソッド... -
yaml (71.0)
-
構造化されたデータを表現するフォーマットであるYAML (YAML Ain't Markup Language) を扱うためのライブラリです。
...'t Markup Language) を扱うためのライブラリです。
//emlist[例1: 構造化された配列][ruby]{
require 'yaml'
data = ["Taro san", "Jiro san", "Saburo san"]
str_r = YAML.dump(data)
str_l = <<~YAML_EOT
---
- Taro san
- Jiro san
- Saburo san
YAML_EOT
p str_r == str_l # => t......//emlist[例2: 構造化されたハッシュ][ruby]{
require 'yaml'
require 'date'
str_l = <<~YAML_EOT
Tanaka Taro: {age: 35, birthday: 1970-01-01}
Suzuki Suneo: {
age: 13,
birthday: 1992-12-21
}
YAML_EOT
str_r = {}
str_r["Tanaka Taro"] = {
"age" => 35,
"birthday" => Date.new(1......}
str_r["Suzuki Suneo"] = {
"age" => 13,
"birthday" => Date.new(1992, 12, 21)
}
p str_r == YAML.load(str_l) # => true
//}
//emlist[例3: 構造化されたログ][ruby]{
require 'yaml'
require 'stringio'
strio_r = StringIO.new(<<~YAML_EOT)
---
time: 2008-02-25 17:03:12 +09:00
target: Y... -
rdoc
/ parser / c (61.0) -
C 言語で記述されたソースコードから組み込みクラス/モジュールのドキュメン トを解析するためのサブライブラリです。
...ethod などで定義されたものに
対応する C 言語の関数のコメントを解析します。
例: Array#flatten の場合。rb_ary_flatten のコメントが解析されます。
/*
* Returns a new array that is a one-dimensional flattening of this
* array (recursively). That......for every element that is an array,
* extract its elements into the new array.
*
* s = [ 1, 2, 3 ] #=> [1, 2, 3]
* t = [ 4, 5, 6, [7, 8] ] #=> [4, 5, 6, [7, 8]]
* a = [ s, t, 9, 10 ] #=> [[1, 2, 3], [4, 5, 6, [7, 8]], 9, 10]
* a.flatten......static VALUE
rb_ary_flatten(ary)
VALUE ary;
{
ary = rb_obj_dup(ary);
rb_ary_flatten_bang(ary);
return ary;
}
...
void
Init_Array()
{
...
rb_define_method(rb_cArray, "flatten", rb_ary_flatten, 0);
上記の例の場合、rb_ary_flatt...