我已经阅读了关于这个主题的几个先前提出的问题和答案[或非常相似],但他们都没有真正解决这一点.在声明一个新的布尔变量时,将它初始化为false是多余的[例如不必要]吗?
boolean selectedZone = false;
Run Code Online (Sandbox Code Playgroud)
而不是宣布
boolean selectedZone;
Run Code Online (Sandbox Code Playgroud)
我看过的其他帖子是 为什么Java的默认值为Boolean设置为true?和java中布尔值的默认值
我已经做了几个月的Swift编程了,我一直很好奇这个......
告诉Swift编译器声明中对象的类型是否有优势?即let image: UIImage = UIImage()
与不告诉编译器并让它在运行时推断类型相比.即let image = UIImage()
我认为告诉编译器对象类型而不是推断它的类型会更有效.我知道这个问题也适用于Objective-C语法,所以我会在标签中添加它.
这些有什么区别?
var a = 13;
this.b = 21;
document.write(a);
document.write(b);
Run Code Online (Sandbox Code Playgroud) 在一个.m文件中声明一个ivar @interface与一个变量之间的区别是什么@implementation?
@interface MyClass : NSObject {
int num;
}
- (void)doSomething;
@end
Run Code Online (Sandbox Code Playgroud)
与
@implementation MyClass
int num2;
- (void)doSomething {
num = 137;
num2 = 138;
}
@end
Run Code Online (Sandbox Code Playgroud)
有没有时间你想把变量放在@implementation?
在c#中寻找代码优化,允许我同时定义枚举并同时创建该枚举类型的变量:
之前:
enum State {State1, State2, State3};
State state = State.State1;
Run Code Online (Sandbox Code Playgroud)
之后(不起作用):
enum State {State1, State2, State3} state;
state = State.State1;
Run Code Online (Sandbox Code Playgroud)
这样的事情存在吗?
我在一本书中看到了一个显示此代码的示例:
@implementation ViewController
{
NSString *name;
}
Run Code Online (Sandbox Code Playgroud)
为什么不宣布这个@interface?在声明变量@implementation而不是@interface?中有什么区别?为什么NSString在范围内声明这个?
我理解将单词放在extern头文件中的变量声明之前声明存在一个全局静态变量而不初始化它.我也明白,如果我导入包含extern变量的文件,我可以在没有类/文件名的情况下引用它们.但是,在哪里定义它们及其价值?
我想要做的是创建一个具有全局常量的常量类,我想在整个iOS应用程序的代码中使用它们.
有人把它们放在界面里面吗?
example.h文件
#import <Foundation/Foundation.h>
@interface Constraints : NSObject
{
extern NSString * const PREFS_NAME;
}
Run Code Online (Sandbox Code Playgroud)
或者就像这样放在接口之外
example.h文件
#import <Foundation/Foundation.h>
extern NSString * const PREFS_NAME;
@interface Constraints : NSObject
{
}
Run Code Online (Sandbox Code Playgroud)
然后在实现.m文件中如何初始化extern值?
在这样的实施区域内?
Example.m
#import "Constraints.h"
@implementation Constraints
/**PRefecences name for the application**/
const NSString * PREFS_NAME = @"MyApp_Prefs";
@end
Run Code Online (Sandbox Code Playgroud)
或者在实现区域之外初始化它们,如下所示:
Example.m
#import "Constraints.h"
/**PRefecences name for the application**/
const NSString * PREFS_NAME = @"MyApp_Prefs";
@implementation Constraints
@end
Run Code Online (Sandbox Code Playgroud)
或者我在构造函数中提供它们的初始值?或者+在它前面的一些任意的静态样式方法,即+(void) setAppConstraints;
我尝试了几种组合,但总是遇到错误,例如"使用不同类型重新定义'xVariable'".或者关于"extern没有初始化界面"的东西(或类似的东西,我忘了).所以我想知道如何正确地声明和初始化它们以形成与 …
long l2 = 32;
Run Code Online (Sandbox Code Playgroud)
当我使用上面的语句时,我没有收到错误(我最后没有使用l过),但是当我使用下面的语句时,我收到此错误:
int类型的文字3244444444超出范围
long l2 = 3244444444;
Run Code Online (Sandbox Code Playgroud)
如果我使用long l2 = 3244444444l;,那就没有错误.
这是什么原因?对于长变量,使用l不是必需的.
我试图理解静态类型的编程语言的好处,并且通过它,我想知道为什么我们需要在声明中包含类型?它是出于任何目的而不是使类型明确吗?如果是这种情况,我不明白这一点.我理解静态类型允许在编译时进行类型检查,但如果我们省略显式类型声明,Java在编译时是否仍然可以推断类型?
例如,假设我们在Java中:
myClass test = new myClass();
Run Code Online (Sandbox Code Playgroud)
这里不需要类型声明吗?如果我没有弄错的话,这是静态绑定,即使在编译时,Java也应该知道test类型myClass没有明确的类型声明.
对可能重复的响应:这不是关于静态与动态类型的问题,而是关于静态类型语言中的类型推断,如接受的答案中所述.
C#9几天前正式发布。一项新的语言功能是“目标类型的新表达式”,它的使用感觉与var. 比较以下声明,我很好奇哪个性能更高(如果有的话),以及不同上下文应首选哪种语法。
var person = new Person()与Person person = new()。
对于收藏:
var people = new[] {
new Person(),
new Person(),
new Person(),
}
Run Code Online (Sandbox Code Playgroud)
与
var people = new Person[] {
new(),
new(),
new(),
}
Run Code Online (Sandbox Code Playgroud) java ×3
objective-c ×3
c# ×2
class ×2
scope ×2
syntax ×2
boolean ×1
enums ×1
extern ×1
ios ×1
javascript ×1
long-integer ×1
oop ×1
swift ×1
var ×1