我有一个PHP脚本,从Dojo Ajax xhrGet调用中以两种方式调用.第一次使用"init"参数调用它会导致脚本创建StateList类的实例并读入状态名称的文件.
session_start();
@include('StateList.php');
require_once('phplog.php');
//start executing here
$comd=$_GET['nexturl'];
if($comd=="init") {
$st = new StateList("../data/statestxt.txt");
$_SESSION['statefile'] = $st;
}
Run Code Online (Sandbox Code Playgroud)
第二次和更多次,另一个xhrGet调用传递一个"getstate"参数,下面的代码尝试从SESSION数组中获取StateList类的实例.
if($comd =="getstate") {
$st= $_SESSION['statefile'];
phplog("size=".$st->getSize());
Run Code Online (Sandbox Code Playgroud)
}
但是,getSize()方法永远不会执行,也不能在重构的StateList类实例上调用任何其他方法.
请注意,这是一个PHP脚本,它在顶部包含类定义,因此类方法应该是已知的和可用的.
我在这里错过了什么?
昨天和今天我一直在阅读的一些内容:
这些差异非常微妙,但它们确实会影响系统在经过多年微妙变化,新功能,增强功能等后的弹性.大多数开发人员不喜欢系统维护,我觉得最大的原因是因为系统并非真正设计为保持.通过结合上面的"单例"模式,我抽象了对象的创建和打字,远离我的核心业务逻辑,这对于长期维护至关重要.
要求消费者无缘无故地创建一个类实例; 对静态方法没有任何风险的真实实用程序类是静态方法的优秀案例 - 以System.Convert为例.如果您的项目是一次性的,对未来的维护没有要求,那么整体架构确实不是很重要 - 静态或非静态,并不重要 - 然而,开发速度确实如此.
我们(我)正忙着重写我们的主要应用程序,解决方案中的一个项目是"Common",它包含一个类"clsCommon".这个类没有属性,一个私有方法被称为构造函数中的唯一行,然后只是公共方法.
这个类处理的事情(不是真正的方法名称或签名):
目前,解决方案中的所有其他项目都引用了该项目,并通过以下方式提供对该类的访问:
namespace Us.OtherProjects
{
public class clsCommon : Us.Common.clsCommon
{}
}
namespace Us.OtherProjects
{
public static class clsMain
{
public static clsCommon CommonClsClassReferenceForGlobalUsage = new clsCommon();
. …Run Code Online (Sandbox Code Playgroud) 根据Guy Rosen和RightScale的说法,Amazon EC2实例ID包含针对"内部ID"的第一个和第二个半部的两个XOR,并且所有三个都针对它们自己的常量.
我知道我们不知道为什么亚马逊会这样做.但是,从一般的角度来看,是否有人实施或看到过这种异或,为什么要实施这种异或?
是帮助模糊ID的唯一目的吗?
我知道有方法__repr__和__str__存在来给出类实例的正式和非正式表示.但是对于类对象是否也存在等价物,因此当打印类对象时,可以显示它的一个很好的表示?
>>> class Foo:
... def __str__(self):
... return "instance of class Foo"
...
>>> foo = Foo()
>>> print foo
instance of class Foo
>>> print Foo
__main__.Foo
Run Code Online (Sandbox Code Playgroud) 首先,有A两个类变量和两个实例变量的类:
In [1]: def fun(x, y): return x + y
In [2]: class A:
...: cvar = 1
...: cfun = fun
...: def __init__(self):
...: self.ivar = 100
...: self.ifun = fun
Run Code Online (Sandbox Code Playgroud)
我们可以看到int类的类变量和实例变量都可以正常工作:
In [3]: a = A()
In [4]: a.ivar, a.cvar
Out[4]: (100, 1)
Run Code Online (Sandbox Code Playgroud)
但是,如果检查函数类型变量,情况就会改变:
In [5]: a.ifun, a.cfun
Out[5]:
(<function __main__.fun>,
<bound method A.fun of <__main__.A instance at 0x25f90e0>>)
In [6]: a.ifun(1,2)
Out[6]: 3
In [7]: a.cfun(1,2)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/home/future/<ipython-input-7-39aa8db2389e> …Run Code Online (Sandbox Code Playgroud) 我正在使用一个返回字符串的类实例.
我正在调用此实例两次并将返回的值收集到列表中.然后我尝试使用.sort()来对这两个字符串进行排序.但是,当我这样做时,它会抛出一个错误,说明类型是(Nonetype - 将其视为对象).
我确实检查了类型(列表的元素),并返回了类型"string".我不知道发生了什么.基本上在空闲时它表示我在列表中有字符串..但是在运行它时会抛出一个错误,说NoneType(这些字符串的列表)不可迭代.
这是一个例子:
list_of_strings = [class_method(args), class_method(another_args)] ## this instance returns string
print type(list_of_strings[0]) #prints type 'str'
Run Code Online (Sandbox Code Playgroud)
错误:
list_sorted = list(list_of_strings.sort())
TypeError: 'NoneType' object is not iterable
Run Code Online (Sandbox Code Playgroud)
非常感谢!
乔治
我正在使用CodeMirror在我的网站上进行一些语法高亮显示.我在我的html中创建了两个单选按钮.我的JavaScript代码如下:
if(flag == "C")
Editor = CodeMirror.fromTextArea(textArea, {
lineNumbers: true,
matchBrackets: true,
mode: "text/x-csrc"
});
else if(flag == "Cpp")
Editor.off(0);
Editor = CodeMirror.fromTextArea(textArea, {
lineNumbers: true,
matchBrackets: true,
mode: "text/x-c++src"
});
Run Code Online (Sandbox Code Playgroud)
它确实完成了语法高亮的功能,但问题是当我多次单击单选按钮时,它只创建了我点击的数量,这很烦人.所以我想知道在创建新的编辑器实例之前有没有办法删除以前的编辑器实例?
假设我在文件或数据库中有一些数据。它可以是JSON,XML,YAML,CSV,String []等。
我想用这些数据创建一个模型对象。例如:
数据:
Run Code Online (Sandbox Code Playgroud){ "name": "John Doe", "age": "30" }
型号(伪代码):
Run Code Online (Sandbox Code Playgroud)class Person { Person(name, age) { this.name = name; this.age = age; } // business logic }
一些从JSON数据(伪代码)创建Person对象的代码:
Run Code Online (Sandbox Code Playgroud)peopleArray = []; recordSet = aJSONReader.read('file'); for (recordSet as r) { peopleArray.add(new Person(r[0], r[1])); }
您将使用什么根据给定的数据构建模型对象?在我的示例中,我将开始支持JSON。如果我想更改它或支持新的数据格式怎么办?如何解耦此代码?哪种设计模式适合这里?
过去几天我一直在努力弄清楚我正在尝试做的事情在Haskell中是否真的可行.
下面是一些上下文:我正在尝试编写一种小标记语言(类似于ReST),其中语法已经通过指令启用了自定义扩展.对于用户实现新指令,他们应该能够在document数据类型中添加新的语义结构.例如,如果想要添加用于显示数学的指令,他们可能希望MathBlock String在ast内部有一个构造函数.
显然,数据类型是不可扩展的,并且存在DirectiveBlock String包含指令名称的通用构造函数(此处"math")的解决方案是不合需要的,因为我们希望在我们的只有格式良好的构造中具有(因此只有具有良好格式的指令)参数).
使用类型系列,我原型如下:
{-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-# LANGUAGE FlexibleInstances #-}
-- Arguments for custom directives.
data family Args :: * -> *
data DocumentBlock
= Paragraph String
| forall a. Block (Args a)
Run Code Online (Sandbox Code Playgroud)
果然,如果有人希望为数学显示定义一个新指令,他们可以这样做:
data Math
-- The expected arguments for the math directive.
data instance Args Math = MathArgs String
doc :: [DocumentBlock]
doc = …Run Code Online (Sandbox Code Playgroud)