Home > xyzzy Archive
xyzzy Archive
Rubyとxyzzy 二日目 後半
xyzzyで学んだこと
;;選択時はWindows風に
(load-library “winkey”)
;;全選択を C-a に割り当てる
(global-set-key #\C-a ’selection-whole-buffer)
Fn + ←(Home) ショートカットキーでのタブ移動
Ruby on Railsで学んだこと
ヘルパーの使い方
リンク先が現在のページと同じ場合(current_page?(item[:link]))や利用不可の場合(item[:disabled])はspan要素を作り、そうでなければlink_toメソッドでリンクを作る
ヘルパー側(app/helper/application_helper.rb)
# Methods added to this helper will be available to all templates in the application.
module ApplicationHelper
def menu_link_to(item)
if current_page?(item[:link])
'<span class="current_page">' + item[:name] + '</span>'
elsif item[:disabled]
'<span class="disabled">' + item[:name] + '(準備中)</span>'
else
link_to(item[:name], item[:link])
end
end
end
テンプレート側
<% menu_items = [
{ :link => { :controller => '/main', :action => 'index' },
:name => 'TOP' },
{ :link => { :controller => '/main', :action => 'activities' },
:name => '私たちの活動'},
{ :link => { :controller => '/main', :action => 'news'},
:name => 'ニュース' },
{ :link => { :controller => '/blog_entries', :action => 'index' },
:name => 'ブログ', :disabled => true },
{ :link => { :controller => '/members', :action => 'index' },
:name => '会員名簿', :disabled => true },
{ :link => { :controller => '/admin/main', :action => 'index' },
:name => '管理ページ', :disabled => true }
] -%>
<div id="menu_bar">
<% menu_items.each_with_index do |item, index| -%>
<% if index > 0 %> | <% end -%>
<%= menu_link_to item -%>
<% end -%>
</div>
今後やりたいこと
シンボルの意味がいまいちなので再度復習する
xyzzyのショートカットキーでのタブ移動
- Comments: 0
- Trackbacks: 0
Rubyとxyzzy 二日目 前半
xyzzyで学んだこと
ファイルを閉じる C-x k
次を検索/前を検索 F5/S-F5
コピー C-Insert
ペースト S-Insert
マウスだけでコピー・ペースト .xyzzyに追加
(defun mouse-right-press ()
(interactive)
(mouse-left-press)
(paste-from-clipboard))
(global-set-key #\LBtnUp ‘copy-selection-to-clipboard)
(global-set-key #\RBtnUp ‘mouse-right-press)
(global-set-key #\MBtnUp ‘mouse-menu-popup)
出所 http://chez-sugi.net/xyzzy/
rubyで学んだこと
Rubyではnumが0の場合はtrue(正しい)になります。また、空文字列「”」もtrueになります。
文字列の中に変数
puts "2かける3は#{2 * 3}です。" # 2かける3は6です。
name = "佐藤"
puts "#{name}さん、こんにちは。" # 佐藤さん、こんにちは。
インスタンス変数
「@」を付けた変数は、クラスのインスタンスごとに作られるインスタンス変数です。
class Book
def initialize(title, price) # 初期化
@title = title
@price = price
end
def put_data # 書名と価格の表示
puts "『#@title』、#@price円"
end
end
book1 = Book.new('こころ', 380) # 本のインスタンス1
book2 = Book.new('明暗', 700) # 本のインスタンス2
book1.put_data
book2.put_data
インスタンス変数@….を作っても、オブジェクトの外からはインスタンス変数にアクセスできません。アクセスしたい場合は変数と同名のメソッドを用意する必要があります。
つまり、ほかのプログラミング言語のメンバ変数やプロパティに当たるものはRubyにはなく、オブジェクトのデータにアクセスするにはメソッドを書かなければならないということです。
このような読み出しや書き込み用のメソッドをアクセサメソッドと呼び、アクセサメソッドでやり取りできるデータを属性と呼びます。Rubyの属性の実態は変数ではなくメソッドであることに注意しましょう。
class Book
def title # 書名の読み出し
@title
end
def title=(title) # 書名の書き込み
@title = title
end
end
book1 = Book.new
book1.title = '草枕'
puts book1.title # 草枕
Rubyにはもっと簡単な書き方が用意されています。attr_reader :titleと記述すると読み出し用メソッドが、attr_wrriter :titleと記述すると書き込み用メソッドが自動的に追加されます。
class Book
attr_reader :title
attr_writer :title
end
# 読み書き両方のメソッドを作りたいときは、attr_accessorを使います。
class Book
attr_accessor :title :price
end
class Book
attr_accessor :title, :price # 読み書きできる属性
def initialize(title, price)
@title = title
@price = price
end
end
book1 = Book.new('こころ', 380)
book2 = Book.new('明暗', 700)
book1.price = 420 # 価格を変更
puts "『#{book1.title}』、#{book1.price}円" # 『こころ』、420円
puts "『#{book2.title}』、#{book2.price}円" # 『明暗』、700円
- Comments: 0
- Trackbacks: 0
Ruby(Ruby on Rails)とxyzzyをデビューしました
windowsのコマンドで学んだこと
ls → dir
rm → del
mv → rename
xyzzyで学んだこと
C-x C-k f で文字コード変換
C-r 上に検索
C-s 下に検索
C-x C-f ファイルを開く
rubyで学んだこと
%q、%、Q%を使うと、二十引用符と一重引用符以外の好きな記号で文字列を囲むことができる
hello = %q/こんにちは/ hello = %Q(こんにちは) hello = %<こんにちは>
変数型変換
a = 4 b = '9' puts a.to_s + b # 49 数値を文字列に変換するメソッド to_s (to_stringの略でしょ) puts a + b.to_i # 13 文字列を整数に変換するには to_i (to_intの略でしょ) puts a * b.to_i # 36 浮動小数点に変換するには to_f (to_floatの略でしょ)
配列
colors = ['red', 'blue', 'yellow']
puts colors.join(', ') # red, blue, yellow
colors.push('pink', 'green')
puts colors.join(', ') # red, blue, pink, green
イテレータ
10.times do |i|
print i, ', ' # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
end
# eachメソッドは、パラメータ(次の例ではitem)に配列の要素を代入しながら
# 配列の要素数だけ繰り返します。
arr = ['apple', 'orange', 'grape']
arr.each do |item|
print item + ', ' # apple, orange, grape,
end
# 配列の要素とともに要素の番号も扱い時は、each_with_indexメソッドを使用
arr = ['apple', 'orange' ,'grape']
arr.each_with_index do |item, i|
print "#{i}.#{item}";
print ', ' if i < arr.lentgh -1
end
例外処理
begin
f = File.open('notexist.txt')
print f.gets
f.close
rescue SystemCallError => e # SystemCallErrorによる例外をキャッチ
warn 'SystemCallError: ' + e.message
rescue Exception => e # その他の例外をキャッチ
warn 'Exception: ' + e.message
end
「?」「!」がつくメソッド
# 「?」が付くメソッドは、trueまたはfalseを返すことを表す。
if message.empty? .... # 空かどうかを調べる
if array.include?('apple') .... # appleが含まれるかどうか調べる
s1= 'hello'
puts s1.class # String
puts s1.kind_of?(String) # true
puts s1.kind_of?(Object) # true
puts s1.instance_of?(String) # true
puts s1.instance_of?(Object) # false
# 「!」が付くメソッドは、そのオブジェクトの中身を変更することを表す。
s1 = 'hello'
s2 = s1
puts s2 # hello
s1.upcase!
puts s2 # HELLO
今後やりたいこと
xyzzyの色づけ
- Comments: 0
- Trackbacks: 0
Home > xyzzy Archive
- Search
- Feeds
- Meta