标签: instance-variables

Rails活动记录实例变量

我的问题是关于这个AR及其实例变量@saved

 class PhoneNumber < ActiveRecord::Base
has_one :user
validates_presence_of :number

def self.create_phone_number( user, phone_hash )
    @new_phone = PhoneNumber.new(phone_hash)
    @user = user
    PhoneNumber.transaction do
        @user.phone_numbers << @new_phone
        @new_phone.save!
        @user.save!
    end
    @saved = true
    return  @new_phone
rescue ActiveRecord::RecordInvalid => invalid
    @saved = false
    return  @new_phone
end

def saved?
    @saved ||= false
end
 end
Run Code Online (Sandbox Code Playgroud)

我的理解是,实例变量将通过实例的存在来保持它们的值.

在我的控制器中使用此AR时,保存了吗?总是返回false ..

@phone_number = PhoneNumber.create_phone_number(@active_user, params[:phone_number])
puts "add_phone_number"
if @phone_number.saved? => always false
Run Code Online (Sandbox Code Playgroud)

关于这些实例变量我缺少什么?谢谢

activerecord ruby-on-rails instance-variables

7
推荐指数
1
解决办法
8015
查看次数

7
推荐指数
1
解决办法
6786
查看次数

你应该只在局部使用局部变量吗?

使用局部变量似乎是可取的,可以在应用程序范围内使用,以避免整个应用程序的依赖.

但是在单个控制器中,引用您知道将在使用partial的所有操作中可用的实例变量似乎是可以接受的.

但是,如果执行此操作,则可能存在风险,即特定操作可能会更改为不再向其视图提供实例变量.部分将停止工作.但是,我不确定这是否真的是一个问题,因为常规视图会遇到相同的风险.

如果在部分中引用实例变量,这有关系吗?

ruby-on-rails instance-variables local-variables partial

7
推荐指数
1
解决办法
2299
查看次数

私有的@property是否创建了一个@private实例变量?

我已经读过,@synthesize它将自动创建相应的实例变量,@property@protected默认情况下 ivars .但是,如果我使用类扩展(如下所示)来指示@property方法是私有的呢?

// Photo.m
@interface Photo ()
@property (nonatomic, retain) NSMutableData *urlData;
@end
Run Code Online (Sandbox Code Playgroud)

相应的ivar会是@private吗?或者我应该明确地声明它是@private这样的吗?

// Photo.h
@interface Photo : Resource {
@private
    NSMutableData *urlData;
}
Run Code Online (Sandbox Code Playgroud)

properties private objective-c instance-variables

7
推荐指数
2
解决办法
2646
查看次数

匿名内部类在访问其原语等时是否始终捕获对"this"(外部)对象的引用?

如果我有

[编辑:添加"内部"的类型定义]

interface Inner{
    public void execute();
}

class Outer{
    int outerInt;
    public void hello(){
        Inner inner = new Inner(){
            public void execute(){
                outerInt=5;
            }
        }

        //later
        inner.execute();
    }
}
Run Code Online (Sandbox Code Playgroud)

调用将该特定对象inner.execute()outerInt变量设置为,无论它在何处被调用,并且只要该对象存在?或者它只是更改变量的副本而不影响原始对象? Outer5InnerouterIntOuter

java anonymous-inner-class instance-variables

7
推荐指数
2
解决办法
1516
查看次数

什么是"非静态方法"错误以及"this"如何工作?

我有一些非常基本的Java问题,我想一劳永逸地理解这些问题.我有以下简短的代码:

public class VeryBasicJava{
    public static void main(String[] args){
        int x = 3;
        int y = 4;
        swapMe(x, y);
    }
    private void swapMe(int a, int b){
        int a;
        int b;
        int tmp = a;
        this.a = b;
        this.b = a;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我编译时,我得到了可怕的"非静态方法swapMe(int,int)无法从静态上下文引用"错误.另外,我得到"a已在swapMe(int,int)中定义","b已经在swapMe(int,int)中定义"

我需要最终通过我的厚厚的头骨,是"非静态方法"错误,它是如何(为什么)引起的,以及如何避免它.

此外,我假设你可以做我试图用'swapMe'方法中的'a'和'b'变量做的事情.我以为我可以传入'a'和'b',但也创建新变量'a'和'b',并用"this"关键字引用它们.

我知道这是非常基本的,但这两个"问题"是我使用Java的两个主要问题,并且出于某种原因,似乎无法正确学习.

谢谢大家,花时间阅读本文.祝你有美好的一天.

java oop compiler-errors instance-variables class-members

7
推荐指数
2
解决办法
2370
查看次数

Objective-C中默认初始化原始实例变量吗?

在下面的代码中,使用它是否安全,_test并期望它有一个vaue NO?或者我是否需要始终在其中明确初始化它- (id)init

@implementation Test {
    BOOL _test;
}
Run Code Online (Sandbox Code Playgroud)

primitive initialization objective-c instance-variables

7
推荐指数
1
解决办法
1422
查看次数

确保变量初始化C#

考虑以下代码:

public string Variable1 { get; set;}
public int Variable2 { get; set;}

public void Function()
{
 // Has been Variable1 Initialized?
}
Run Code Online (Sandbox Code Playgroud)

在函数内部,我想知道在函数调用之前是否已将值发送到Variable1和Variable2,

即使已发送DEFAULT值,也没问题(对于字符串为null,对于int为0)

.net c# variables instance-variables

7
推荐指数
1
解决办法
244
查看次数

您可以从类中获取实例变量名称吗?

我知道你不应该在程序中使用变量名,但我使用的是严格的调试目的,并希望将变量的名称传达给用户以提高可读性。

我有一个这样的文件:

class MyClass(object):
    def __init__(self):
        pass

    def foo(msg=""):
        debug("Called from the %s instance.") #quazi-print function that only prints when a DEBUG variable is True.
        print(msg)

m = MyClass()
m.foo("Test")
Run Code Online (Sandbox Code Playgroud)

我想m从类本身中检索实例变量名称。虽然这只是一个示例文件,但我使用它向用户传达已在实例变量中的某个属性处创建了原始套接字,并希望显示它的位置(即New socket at m.socket

这对 Python 可行吗?

python class instance-variables instance

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

为什么“self.self”可以快速编译和运行?

昨天我在 Swift 中查看了一段代码,其中包括这一行:

self.self.someProperty
Run Code Online (Sandbox Code Playgroud)

这让我感到惊讶,因为self一词被保留并用作对当前实例的引用。

起初我用其他语言检查了这种现象,但都出错了。这并不奇怪 - 但是,为什么它会在 swift 中编译和运行?

其次,我在互联网上搜索了有关此内容的信息,但没有找到任何相关内容...

编辑 我从我的支票中复制了这一点:

self.someProperty//exactly the same as:
self.self.someProperty//or as:
self.self.self.self.self.someProperty
Run Code Online (Sandbox Code Playgroud)

Swift 文档给出了一些解释:

类型的每个实例都有一个称为 self 的隐式属性,它完全等同于实例本身

这很好,部分有用,但我认为它仍然不够

所以我问:

  1. 为什么有效?
  2. 这背后有什么有用的逻辑吗?

oop instance-variables self swift

7
推荐指数
2
解决办法
1950
查看次数