标签: self

为什么Array#每个都返回一个具有相同元素的数组?

我正在学习如何each在ruby中工作的细节,我尝试了以下代码行:

p [1,2,3,4,5].each { |element| el }
Run Code Online (Sandbox Code Playgroud)

结果是一个数组

[1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

但我不认为我完全理解为什么.为什么each同一个数组的返回值?难道每个都不提供迭代方法吗?或者只是该each方法返回原始值的常见做法?

ruby arrays each self

19
推荐指数
2
解决办法
2万
查看次数

在Ruby中,在类方法中,自我是类还是实例?

我知道这self是实例方法中的实例.那么,self类方法中的类是什么?例如,以下是否会在Rails中工作?

class Post < ActiveRecord::Base
  def self.cool_post
    self.find_by_name("cool")
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby class self instance class-method

18
推荐指数
3
解决办法
1万
查看次数

为什么自我可以在Delphi中分配?

GUI应用程序中的此代码编译并运行:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Self := TForm1.Create(Owner);
end;
Run Code Online (Sandbox Code Playgroud)

(使用Delphi 6和2009测试)

  • 为什么自我可写而不是只读?
  • 哪种情况可能有用?

编辑:

  • 在Delphi Prism中这也是可能的吗?(我想是的,见这里)

更新:使用Self赋值的Delphi应用程序/库:

delphi oop language-features self delphi-prism

17
推荐指数
3
解决办法
2412
查看次数

为什么使用[ClassName alloc]而不是[[self class] alloc]?

我正在阅读Mac上的 Mark Dalrymple的Learn Objective-C(仅在Protocols的章节,所以还是相对较新的)并试图找出一些东西:

你为什么要用自己的名字引用一个类?如果我上课了Foo,为什么我要写,比方说,

[[Foo alloc] init]
Run Code Online (Sandbox Code Playgroud)

并不是

[[[self class] alloc] init]
Run Code Online (Sandbox Code Playgroud)

如果我有一个子类Bar,第一个选项不会使我无效

[[Bar alloc] init]
Run Code Online (Sandbox Code Playgroud)

而第二种选择会允许吗?第一种选择什么时候会更好?

allocation initialization objective-c self

17
推荐指数
2
解决办法
5180
查看次数

Rails - 自我与@

我正在关注Michael Hartl的RoR教程,它涵盖了密码加密的基础知识.这是目前的用户模型:

class User < ActiveRecord::Base
    attr_accessor :password

    attr_accessible :name, :email,: password, :password_confirmation

    email_regex = /^[A-Za-z0-9._+-]+@[A-Za-z0-9._-]+\.[A-Za-z0-9._-]+[A-Za-z]$/
                                              #tests for valid email addresses.

    validates :name, :presence => true,
                     :length => {:maximum => 50}
    validates :email, :presence => true,
                      :format => {:with => email_regex},
                      :uniqueness => {:case_sensitive => false}
    validates :password, :presence => true,
                         :length => {:maximum => 20, :minimum => 6},
                         :confirmation => true

    before_save :encrypt_password

    private

    def encrypt_password
        self.encrypted_password = encrypt(password)
    end

    def encrypt(string)
        string
    end
end
Run Code Online (Sandbox Code Playgroud)

我发布了一个关于before_save不工作的上一个问题,事实证明我不小心做的是将我的encrypt_password写成:

def …
Run Code Online (Sandbox Code Playgroud)

ruby instance-variables self ruby-on-rails-3

17
推荐指数
1
解决办法
4687
查看次数

检查自我.__ class__的目的是什么? - 蟒蛇

检查的目的是self.__class__什么?我找到了一些创建抽象接口类的代码,然后检查它self.__class__本身是否是自己的,例如

class abstract1 (object):
  def __init__(self):
    if self.__class__ == abstract1: 
      raise NotImplementedError("Interfaces can't be instantiated")
Run Code Online (Sandbox Code Playgroud)

那是什么意思?是要检查这个类是否是一种类型?

代码来自NLTK的http://nltk.googlecode.com/svn/trunk/doc/api/nltk.probability-pysrc.html#ProbDistI

python oop interface class self

16
推荐指数
1
解决办法
2万
查看次数

什么是使用点[self class]

这段代码是否正确

@implementation Vehicle
+(id) vehicleWithColor:(NSColor*)color {
    id newInstance = [[[self class] alloc] init]; // PERFECT, the class is // dynamically identified
    [newInstance setColor:color];
    return [newInstance autorelease];
}
@end
Run Code Online (Sandbox Code Playgroud)

为何使用[自习班]

我认为自己已经指向静态方法的类(带+的那些)

xcode class objective-c self

15
推荐指数
2
解决办法
1万
查看次数

python全局名称'self'未定义

刚开始学习python,我确信这是一个愚蠢的问题,但我正在尝试这样的事情:

    def setavalue(self):
        self.myname = "harry"

    def printaname():
        print "Name", self.myname     

    def main():
        printname()




    if __name__ == "__main__":
        main() 
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

 NameError: global name 'self' is not defined
Run Code Online (Sandbox Code Playgroud)

我看到这种使用self语句引用一些代码中不同方法的变量的方法,我读到它正常工作.

谢谢您的帮助

python variables self

15
推荐指数
2
解决办法
8万
查看次数

PHP - self,static或$ this in callback function

是否可以访问被引用的类/对象self,static以及$thisPHP中的匿名回调?像这样:

class Foo {
    const BAZ = 5;
    public static function bar() {
         echo self::BAZ; // it works OK
         array_filter(array(1,3,5), function($number) /* use(self) */ {
             return $number !== self::BAZ; // I cannot access self from here
         });
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让它像通常的变量一样使用use(self)子句?

php static callback self anonymous-function

15
推荐指数
1
解决办法
8915
查看次数

Python self和super在多重继承中

在Raymond Hettinger 在PyCon 2015上的演讲" 超级考虑超级发言 "中,他解释了super在多重继承环境中使用Python 的优势.这是雷蒙德在演讲中使用的一个例子:

class DoughFactory(object):
    def get_dough(self):
        return 'insecticide treated wheat dough'


class Pizza(DoughFactory):
    def order_pizza(self, *toppings):
        print('Getting dough')
        dough = super().get_dough()
        print('Making pie with %s' % dough)
        for topping in toppings:
            print('Adding: %s' % topping)


class OrganicDoughFactory(DoughFactory):
    def get_dough(self):
        return 'pure untreated wheat dough'


class OrganicPizza(Pizza, OrganicDoughFactory):
    pass


if __name__ == '__main__':
    OrganicPizza().order_pizza('Sausage', 'Mushroom')
Run Code Online (Sandbox Code Playgroud)

有人在台下雷蒙德有关使用的差异self.get_dough(),而不是super().get_dough().我对Raymond的简要回答并不是很了解,但我编写了这个例子的两个实现来看看差异.两种情况的输出相同:

Getting dough
Making pie with pure untreated wheat dough
Adding: Sausage
Adding: …
Run Code Online (Sandbox Code Playgroud)

python inheritance self super method-resolution-order

15
推荐指数
1
解决办法
926
查看次数