//
you're reading...
Codes, Ruby

Sử Dụng Cú Pháp With Trong Ruby

Trong ngôn ngữ Visual Basic có một cú pháp câu lệnh With…End With cho phép bạn gọi thực hiện một loạt các thuộc tính trên một đối tượng đặc biệt nào đó mà không cần gõ lại tên của đối tượng đó.

With testObject
    .Height = 100
    .Text = "Hello, World"
    .ForeColor = System.Drawing.Color.Green
    .Font = New System.Drawing.Font(.Font, System.Drawing.FontStyle.Bold)
End With

Tương tự như Visual Basic, trong Javascript cũng có cú pháp With với chức năng tương đương như vậy, đoạn mã sau sử dụng cú pháp with:

with(Math) {
      console.log(cos(3.14/2));
      console.log(sqrt(4));
}

Thay vì:

console.log(Math.cos(3.14/2));
console.log(Math.sqrt(4)); 

Tuy nhiên trong ngôn ngữ lập trình Ruby lại không có cú pháp With giống như vậy, đoạn mã sau không có sử dụng cú pháp With:

puts Math.cos(3.14/2)
puts Math.sqrt(4)

Nhưng chúng ta có thể tạo ra một phương thức With trong Ruby với chức năng tương đương bằng cách sử dụng các tham số đối tượng và block như sau:

def With(obj, &block)
   obj.instance_eval(&block)
end

Và đoạn mã ở trên sau khi được sử dụng cú pháp With:

With(Math) {
   puts cos(3.14/2)
   puts sqrt(4)
}

Thậm chí, ta còn có thể sử dụng With với cả các kiểu đối tượng trong Ruby như Integer, String…

With("I love Ruby.") {
   puts reverse
   puts gsub(/Ruby/, "YUI")
}

~Theo shunsuk[dot]blogspot[dot]com~

Advertisements

Discussion

No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: