在昨天的CocoaHeadsÖresund会议上,peylow构建了一个很棒的ObjC测验.竞争非常激烈,当评估最后一个问题时,有三个人留下相同的分数:Objective-C有多少保留关键字加到C?
随后进行了一些激烈的辩论.所有人都认为@interface,@implementation等等都是预处理器指令而不是关键字,但是怎么样in?它可能是一个关键字,但它不是保留关键字.例如,以下将编译没有错误或警告:
NSArray* in;
for (in in in)
NSLog(@"bwahahaa");
Run Code Online (Sandbox Code Playgroud)
我们的结论是,ObjC 没有为C 添加保留关键字,有人赢得了一本看似很好的书.
但今天我通过尝试这样的事情尝试了一些更系统的滥用编译器:
int self = 45;
self++;
int y = self;
Run Code Online (Sandbox Code Playgroud)
这编译罚款,而相同的代码工作替换为自己BOOL, bycopy, inout, oneway, byref, SEL,和IMP.
使用id变量名称,第一行和最后一行编译,但不是第二行.同样的Protocol,和Class.
使用super,第一行编译,但不是第二行和第三行.
随着YES,NO和NULL所有三线无法编译,可能是因为他们只是被定义为true,false和nil.
在我看来,很多这就是gcc变得困惑,我不太确定它反映的是什么是Objective-C中的保留关键字.例如,为什么可以将其self用作int的名称,但不是super吗?
第一个赋值始终有效(除了带有YES,NO和NULL)这一事实似乎支持这样一种观点,即没有一个候选是C中没有的技术上保留的关键字.或者?
有人可以给我们一个关于这个棘手问题的权威解释吗?
几个人的荣誉受到威胁.
编辑:正如Nikolai Ruhe指出的那样,我们需要明确定义"关键字"才能继续.Niko引用维基百科的一篇文章称关键词是"具有特定含义的词或标识符".
我认为从同一篇文章中使用这个定义是合理的:
在许多语言中,例如C和类似C++的环境,关键字是一个标识语法形式的保留字.控制流构造中使用的单词,例如if,then和else是关键字.在这些语言中,关键字也不能用作变量或函数的名称.
此外,正如文章所述:
通常,当程序员尝试使用关键字作为变量或函数名称时,将触发编译错误. …
我有几张桌子(确切地说,7张)我互相交叉的桌子.这部分给我一些问题;
表"行动"
-----------------------------------------
| ID | Package ID | Action Type | Message |
-----------------------------------------
| 40 | 100340 | 0 | OK |
| 41 | 100340 | 12 | Error |
| 42 | 100340 | 2 | OK |
| 43 | 100341 | 4 | OK |
| 44 | 100341 | 0 | Error |
| 45 | 100341 | 12 | OK |
-----------------------------------------
Run Code Online (Sandbox Code Playgroud)
表"包"
----------------------
| ID | Name |
----------------------
| 100340 …Run Code Online (Sandbox Code Playgroud) 需要一个简单的preg_replace来转换<br> <br/>所有可能的br组合<br />.
这需要按顺序工作,所以我可以处理一个字符串,即:
$output = preg_replace('', '<br />', $input)
感谢大家!
我有一个带有普通窗口的Windows窗体应用程序.现在,当我关闭应用程序并重新启动它时,我希望主窗口出现在屏幕上的同一位置,其大小与关闭时的大小相同.
在Windows窗体中是否有一种简单的方法可以记住屏幕位置和窗口大小(如果可能的话,窗口状态)或者是否必须手动完成所有操作?
s ='这是样本'
我需要像这样转换
s='"This is sample"'
Run Code Online (Sandbox Code Playgroud)
输出="This is sample"
如何在动态
中做到这一点,提前谢谢
怎么会这样?(这取自VS2008中的即时窗口)
?string.Compare("-", "+")
-1
?string.Compare("-0", "+0")
1
Run Code Online (Sandbox Code Playgroud) 我想改变Tabbar的高度.
代码是:
rootController.tabBar.frame= CGRectMake(0,450,320,30);
Run Code Online (Sandbox Code Playgroud)
rootController是TabBarController对象.
在调整标签栏大小后,我在视图和标签栏之间获得了空格.
然后它没有用来调整它的大小.如何正确调整大小以便消除myview和tabbar之间的空间?
| -------------------- |
|
|
|
|
|
| ........................ |在视图和我的tabbar空间之间保持不变
| ............... ......... |
| view1 | view2 |
| -------------------- |
有什么解决方案吗?提前致谢 ...
我可以在页面中使用javascript和jquery吗?
喜欢:
<script type="text/javascript">
$(document).ready(function(){
//some jquery
});
function xyz(){
//javascript statements
//some jquery statements
}
</script>
Run Code Online (Sandbox Code Playgroud) 我正在用Python编写一个cgi页面.假设客户端向我的cgi页面发送请求.我的cgi页面进行计算,一旦它有第一个输出,它就会将该输出发送回客户端,但它会继续进行计算并在发送第一个响应后发送其他响应.
我在这里介绍的可能吗?我问这个问题是因为在我有限的知识中,在cgi页面中,响应是一次性发回的,一旦发送响应,cgi-page就会停止运行.这件事是在服务器端或客户端进行的,我该如何实现呢?
我的服务器正在运行Apache.非常感谢你.
我在这个论坛中尝试过"dbr"的客户端代码(感谢他,我知道了多长时间的轮询工作).
<html>
<head>
<title>BargePoller</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<style type="text/css" media="screen">
body{ background:#000;color:#fff;font-size:.9em; }
.msg{ background:#aaa;padding:.2em; border-bottom:1px #000 solid}
.old{ background-color:#246499;}
.new{ background-color:#3B9957;}
.error{ background-color:#992E36;}
</style>
<script type="text/javascript" charset="utf-8">
function addmsg(type, msg){
/* Simple helper to add a div.
type is the name of a CSS class (old/new/error).
msg is the contents of the div */
$("#messages").append(
"<div class='msg "+ type +"'>"+ msg +"</div>"
);
}
function waitForMsg(){
/* This requests the url …Run Code Online (Sandbox Code Playgroud) 我有一个服务器端类,我通过[DataContract]在客户端提供.这个类有一个readonly字段,我想通过一个属性提供.但是,我无法这样做,因为似乎我不允许在没有get和set的情况下添加[DataMember]属性.
那么 - 有没有一种方法可以在没有setter的情况下拥有[DataMember]属性?
[DataContract]
class SomeClass
{
private readonly int _id;
public SomeClass() { .. }
[DataMember]
public int Id { get { return _id; } }
[DataMember]
public string SomeString { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
或将溶液中使用[数据成员]作为字段- (例如像显示在这里)?尝试这样做,但它似乎并不关心该领域是readonly ..?
编辑:这是通过黑客攻击这样做的唯一方法来制作一个只读属性吗?(不 - 我不想这样做......)
[DataMember]
public int Id
{
get { return _id; }
private set { /* NOOP */ }
}
Run Code Online (Sandbox Code Playgroud) .net ×3
python ×2
string ×2
c# ×1
cgi ×1
datacontract ×1
datamember ×1
gcc ×1
grammar ×1
iphone ×1
javascript ×1
join ×1
jquery ×1
keyword ×1
localization ×1
objective-c ×1
php ×1
preg-replace ×1
readonly ×1
sql ×1
sql-server ×1
uitabbar ×1
wcf ×1
window ×1
winforms ×1