我来自C#背景,但我现在正在学习C. 在C#中,当想要发出错误信号时,就会抛出异常.但你在C做什么?
比如说你有一个堆栈push和pop函数.什么是在a期间表示堆栈为空的最佳方式pop?你从这个功能返回什么?
double pop(void)
{
if(sp > 0)
return val[--sp];
else {
printf("error: stack empty\n");
return 0.0;
}
}
Run Code Online (Sandbox Code Playgroud)
K&R的第77页示例(上面的代码)返回一个0.0.但是,如果用户0.0在堆栈上推送了更早的内容,您如何知道堆栈是否为空或是否返回了正确的值?
我确定这个问题一再被问到,但由于某种原因,我仍然无法让这个问题起作用.
我想反序列化包含单个成员的JSON对象; 一个字符串数组:
{"results" : ["a", "b"]}
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试反序列化的类:
public class Whatever {
[DataMember(Name = "results")]
public string[] Results { get; protected set; }
}
Run Code Online (Sandbox Code Playgroud)
这是Deserialize方法:
private static T Deserialize<T>(string json)
{
var instance = Activator.CreateInstance<T>();
using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
{
var serializer = new DataContractJsonSerializer(instance.GetType());
return (T)serializer.ReadObject(ms);
}
}
Run Code Online (Sandbox Code Playgroud)
类似的调用Deserialize<Whatever>("{\"results\" : [\"a\", \"b\"]}")返回一个初始化的实例,Whatever但Results数组仍在停留null.
结构有问题Whatever吗?
参考我目前正在构建的这个编程游戏.
alt text http://img12.imageshack.us/img12/2089/shapetransformationf.jpg
要在WPF中翻译Canvas,我使用两个表单:( TranslateTransform移动它)和RotateTransform(旋转它)[ 相同的子节点 TransformationGroup ]
我可以很容易地获得画布的左上角x,y坐标,当它没有旋转(或旋转90度,因为它将是相同的),但我面临的问题是左上角(和其他3点)坐标.
这是因为当RotateTransform应用a 时,TranslateTransform's X和Y属性不会改变(因此仍然表明正方形的左上角就像点状正方形(来自图像)
Canvas正在从它的中心旋转,因此它就是它的起源.
那么如何在旋转后获得4个点的"新"x和y坐标?
[UPDATE]
alt text http://img25.imageshack.us/img25/8676/shaperotationaltransfor.jpg
我找到了找到左上角的方法通过将旋转中的OffsetX和OffsetY添加到起始X和Y坐标,在旋转后坐标的方法(从新图像中可以看到).
但我现在无法找出其余的坐标(另外3个).
通过这种旋转的形状,我如何计算其余3个角的x和y坐标?
[编辑]
第二张图片中的点不准确和精确点.我在脑海中估计了这一点.
[更新]解决方案:
首先,我要感谢Jason S.这篇冗长且非常翔实的文章,其中他描述了整个过程背后的数学; 通过阅读你的帖子和尝试价值观,我当然学到了很多东西.
但我现在已经找到了一个代码片段(感谢EugeneZ的提及TransformBounds),它完全符合我的要求:
public Rect GetBounds(FrameworkElement of, FrameworkElement from)
{
// Might throw an exception if of and from are not in the same visual tree
GeneralTransform transform = …Run Code Online (Sandbox Code Playgroud) 一个有效的 JSON语法是什么样的东西:
{
"username": "admin",
"password": "123"
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我想传输一组"用户"(给定示例)而不是单个"用户"呢?
根据规范,代码是否有效JSON?
[{
"username": "admin",
"password": "123"
}, {
"username": "bbvb",
"password": "sdfsdf"
}, {
"username": "asd",
"password": "222"
}]
Run Code Online (Sandbox Code Playgroud)
如果没有,使用JSON传输值数组的最佳方法是什么?(并且用'最好的方式',我的意思是语法上的)
我目前在学校的最后一年,攻读计算机研究高等国家文凭,基本上在最后一个学期,我们需要开发一个软件项目,基本上包含一个完整的系统.
现在,我正在考虑做的事情就像Robocode一样,但是我将使用.Net Framework来代替Java.
对于那些你不知道的Robocode是什么,它基本上是一种编程游戏在人们开发利用的类接口和存在的下载类的方法自己的机器人,然后他们打在对方的自主战斗竞技场......像这样:
alt text http://articles.techrepublic.com.com/i/tr/cms/contentPics/robocode.gif
所以基本上,正如我所说,我想使用.Net Framework重新创建这种场景.我在StackOverflow上发布这个问题,希望更有经验的开发人员能够指导我为这个项目正确的方向.
到目前为止我的想法基本上是创造:
现在,当战斗发生时,当然会有某种动画和动作,我还没有决定还有什么用作媒介.
我目前想到的选项是:
你认为什么可能更适合这种特殊情况?
对于玩家开发机器人,我将提供他们能够像Robocode一样使用的某些类接口.
此类事件和方法的示例可能包括:
public void run () {}
public void onScannedRobot(ScannedRobotEvent e) {}
walk(/* ammount in pixels or w/e to walk to */);
turnRight(/* value in degrees for an angular turn */);
//etc...
Run Code Online (Sandbox Code Playgroud)
以下是Robocode(Java)中代码的片段:
public class MyFirstRobot extends Robot {
public void run() {
while (true) {
ahead(100);
turnGunRight(360);
back(100);
turnGunRight(360); …Run Code Online (Sandbox Code Playgroud) 我有以下结构:
abstract class Base {
public abstract List<...> Get(); //What should be the generic type?
}
class SubOne : Base {
public override List<SubOne> Get() {
}
}
class SubTwo : Base {
public override List<SubTwo> Get() {
}
}
Run Code Online (Sandbox Code Playgroud)
我想创建一个抽象方法,返回具体子类的任何类.因此,正如您从示例中看到的那样,方法SubOne应返回,List<SubOne>而方法SubTwo应该返回List<SubTwo>.
我在Base类中声明的签名中指定了什么类型?
[UPDATE]
谢谢你发布的答案.
解决方案是使抽象类具有通用性,如下所示:
abstract class Base<T> {
public abstract List<T> Get();
}
class SubOne : Base<SubOne> {
public override List<SubOne> Get() {
}
}
class SubTwo : Base<SubTwo> {
public …Run Code Online (Sandbox Code Playgroud) 我正在阅读"Dot Net Thoughts"中的" 为什么语言很重要(为什么我更喜欢C#) " 的帖子,本文的第一段以此声明结束:
......每种语言都是为特定目的而创建的.
这让我想到了某些语言存在的"原因"......即它们存在的具体原因是什么.
我从这个问题的目标是列出尽可能多的编程语言及其存在的主要原因 ......为什么使用它们; 这将有助于人们决定使用什么语言来执行特定任务.
语言,如C#,VB,Haskell,Eiffel,Perl,Python,Java等; 程序语言,函数语言,面向对象语言等......
如何从javascript调用jQuery函数?
//jquery
$(function() {
function my_fun(){
/.. some operations ../
}
});
//just js
function js_fun () {
my_fun(); //== call jquery function
}
Run Code Online (Sandbox Code Playgroud) 我目前正在阅读Simon Thompson的The Craft of Functional Programming,在描述递归时,他还提到了一种称为Primitive Recursion的递归形式.
你能解释一下这种类型的递归与"普通"递归函数有什么不同吗?
这是一个原始递归函数的例子(在Haskell中):
power2 n
| n == 0 = 1
| n > 0 = 2 * power2(n - 1)
Run Code Online (Sandbox Code Playgroud) 所以尝试分析一些代码,我认为最简单的方法(至少在Firefox上)是使用console's time/ timeEnd或profile/ profileEnd,我尝试了两种.
我遇到的问题是我在Firefox崩溃之前可以做的运行次数.现在我不会在这里粘贴代码,因为它是典型的基准测试代码(并且它非常混乱),但显然它的要点是它运行函数(测试用函数表示),记录它们的执行时间为一定数量跑步
现在,例如,5e4它可以运行,但我认为它不足以发现(非常)微优化,但更重要的是,它崩溃了.
那你如何描述你的JavaScript?因为这样,它几乎不可行.