Do块是否与With语句相同?

joh*_*nny 1 ruby vb.net

学习Ruby和Do块.来自很多c#我没有看到太多提醒我的Do,但是随后我想到了With语句和我希望在c#中的一个(也许它是,我从未见过它?).Do和With这两个陈述看似相似.

VB中的With语句与Ruby中的Do块相同吗?

编辑:

举个例子,ActiveRecord对象,映射到数据库表:

TheBook.new do |book|
 book.title = "my book"
 book.writer = "some author"
end
Run Code Online (Sandbox Code Playgroud)

我明白从看到它我会得到什么.我知道我将在我的数据库中获得上述信息的新记录,但我不知道为什么.为什么这本书成为了稿件?我是从右到左阅读的吗?

Han*_*Gay 8

第红宝石块(你有什么划定doend)基本上是关闭.with在VB中只是语法糖,以防止您需要一遍又一遍地键入变量名称.


Jos*_*lio 5

作为一名C#开发人员,我自己没有太多的Ruby经验,我理解你的困惑.

如果您熟悉C#2.0中的匿名委托和C#3.0中的lambda表达式的概念,那么这将更有意义.

您的Ruby ActiveRecord示例可以使用匿名委托在C#2.0中表示:

TheBook.New ((delegate TheBook book){
  book.title = "my book";
  book.author = "some author";
});
Run Code Online (Sandbox Code Playgroud)

或者在C#3.0中使用lambda表达式如下:

TheBook.New (book => {book.title = "my book"; book.author = "some author"});
Run Code Online (Sandbox Code Playgroud)

当你有方法期望函数作为参数或C#中的委托时,基本上"do"块就会发挥作用.