我在模型中移动了一些查找代码.
我之前在我的控制器中
$this->Book->Review->find('first', array(
'conditions' => array(
'Review.book_id' => $id,
'Review.user_id' => $this->Auth->user('id')
)
));
Run Code Online (Sandbox Code Playgroud)
所以在我的评论模型中我放了类似的东西
function own($id) {
$this->contain();
$review = $this->find('first', array(
'conditions' => array(
'Review.book_id' => $id,
'Review.user_id' => AuthComponent::user('id')
)
));
return $review;
}
Run Code Online (Sandbox Code Playgroud)
所以我从模型中静态地调用AuthComponent.我知道我可以为方法AuthComponent :: password()执行此操作,这对验证很有用.但我特别是使用方法AuthComponent :: user()得到错误
致命错误:在第663行的/var/www/MathOnline/cake/libs/controller/components/auth.php中调用非对象的成员函数check()
有没有办法从模型中获取有关当前登录用户的信息?
我在项目中使用scalaz7,有时我会遇到导入问题.最简单的方法是开始
import scalaz._
import Scalaz._
Run Code Online (Sandbox Code Playgroud)
但有时这会导致冲突.到目前为止我一直在做的事情是下面一个有点痛苦的过程:
-Xprint:typer以找出隐式解析后代码的外观虽然这有效,但我想简化它.我看到scalaz7有更多细粒度的导入,但我不完全了解它们的组织方式.例如,我看到一个人可以做到
import scalaz.std.option._
import scalaz.std.AllInstances._
import scalaz.std.AllFunctions._
import scalaz.syntax.monad._
import scalaz.syntax.all._
import scalaz.syntax.std.boolean._
import scalaz.syntax.std.all._
Run Code Online (Sandbox Code Playgroud)
等等.
这些子进口是如何组织的?
举个例子,假设我想使用验证.我需要什么,例如注入验证含义并进行以下编译?
3.fail[String]
Run Code Online (Sandbox Code Playgroud)
如何制作ValidationNEL[A, B]一个实例Applicative?
在Javascript中,并非每个数据都是对象.存在一些原始类型,如字符串,数字和布尔值,它们不是对象.对于每一个这种类型的存在的构造,其与类似的行为输出的对象:Number,String和Boolean.为了混淆问题,实际上可以在原始类型上调用方法 - 它们将在此操作期间转换为相应的对象,然后转换回来.例如,人们可以做到
var a = 4.1324;
a.toFixed(1) // Outputs 4.1
Run Code Online (Sandbox Code Playgroud)
然而,如果您尝试将基本类型和对象与严格相等进行比较,则会出现差异
var a = new Number(4);
var b = 4;
a === b; // False!!!
typeof a; // 'object'
typeof b; // 'number'
Run Code Online (Sandbox Code Playgroud)
实际上,一个人试图比较对象,但结果却是不同的:
var a = new Number(4);
var b = new Number(4);
a === b; // False!!!
Run Code Online (Sandbox Code Playgroud)
(从概念的角度来看,我有点理解这种区别.对象可以有其他属性,因此不应该比较相等,除非它们实际上是相同的.所以如果我们想让4 === 4我们需要使用不是但是,任何充分动态的编程语言都面临着这种困境,但Javscript是我所知道的唯一一种有两种类型 - 一种是对象的而一种不是 - 用于数字或字符串.)
为数字,字符串和布尔值保留两个单独的表示形式有什么好处?在什么情况下,人们需要区分原始类型和对象?
我已经开始使用Sphinx记录Python项目.这是我第一次使用它 - 我习惯使用类似JavaDoc语法的工具,我有些疑惑.
因为我想要的文档出现在代码的旁边,我利用的.. automodule::,.. autoclass::和.. automethod::指令.所以我的文档结构如下:index.rst包含TOC和
.. automodule:: my_main_package
Run Code Online (Sandbox Code Playgroud)
然后顶级__init__.py包含指令
.. automodule:: some_subpackage
Run Code Online (Sandbox Code Playgroud)
对于每个子包等等.最后,每个模块都包含指令
.. autoclass:: some_class
:members:
Run Code Online (Sandbox Code Playgroud)
对于模块中的每个类.
这主要是有效的,但我得到的是单页文档,这有点奇怪.
我应该如何组织文档以获取超链接文件树?也就是说,主程序包应该包含自己的文档和每个子包的链接,依此类推,直到每个模块都有自己的页面.
在JavaScript中,我习惯于能够调用稍后要执行的函数,就像这样
function foo() {
alert('bar');
}
setTimeout(foo, 1000);
Run Code Online (Sandbox Code Playgroud)
这不会阻止其他代码的执行.
我不知道如何在Python中实现类似的东西.我可以睡觉
import time
def foo():
print('bar')
time.sleep(1)
foo()
Run Code Online (Sandbox Code Playgroud)
但这会阻止其他代码的执行.(实际上在我的情况下阻塞Python本身并不是问题,但我无法对该方法进行单元测试.)
我知道线程是为不同步执行而设计的,但我想知道是否更容易,类似setTimeout或setInterval存在.
Javascript为其对象使用基于原型的模型.尽管如此,该语言非常灵活,并且很容易用几行函数编写,这些函数替换了构造上的其他类型.例如,可以创建一个class函数,模拟标准类行为,包括继承或私有成员.或者可以通过编写一个curry函数来模仿功能工具,例如,一个函数将获取一个函数及其一些参数并返回部分应用的函数.
我想知道是否可以反过来模仿更古典语言中的原型方法.特别是我一直在思考是否有可能在Python中模仿原型,但缺乏对匿名函数的支持(比lambdas更常见)让我陷入困境.
是否有可能编写一些函数来模仿基于类的语言中的指标,特别是在Python中?
编辑让我举一个例子,说明如何实现这样的事情(但我真的无法做到这一切).
首先,最接近Javascript对象的东西是Python字典.所以我们可以有简单的对象
foo = {
'bar': 1,
'foobar': 2
}
Run Code Online (Sandbox Code Playgroud)
当然我们想要添加方法,只要该方法适合lambda,这就不是问题
foo = {
'bar': 1,
'foobar': 2,
'method': lambda x: x**2
}
Run Code Online (Sandbox Code Playgroud)
所以现在我们可以打电话了
foo['method'](2)
>>> 4
Run Code Online (Sandbox Code Playgroud)
现在,如果我们有任意函数作为方法,我们就可以继续这样做.首先,我们需要内部的功能foo才能访问foo自己; 否则它们只是普通的功能,而不是方法.
我想可以通过应用一个makeObject函数来实现这一点,该函数foo循环遍历foo值,并且每当找到可调用的值时,修改其__call__属性以foo作为其第一个参数传递.
在这个阶段,我们将拥有自立对象,可以在不需要创建类的情况下声明它们.
然后我们需要能够给出foo一个原型,它可以作为makeObject函数的第二个参数传递.该函数应该修改foo.__getattr__并foo.__setattr__如下:每当找不到属性时foo,应该搜索它foo.prototype.
因此,我认为我能够实现这一点,期待一件事:我想不出任何方法来声明方法比lambdas更复杂,除了事先声明它们并将它们附加到我的对象.问题是缺乏匿名功能.我在这里问,因为也许一些Python大师可以找到一些聪明的方法来规避这个.
javascript python inheritance prototype prototypal-inheritance
免责声明:我是C的完全新手,但我一直在玩它试图模仿一些类的功能.好吧,我知道如果我想这样,我应该学习C++,但请考虑以下一点实验.
Schreiner,在使用ANSI-C的面向对象编程一书中提出了一种使用指针在C中获取面向对象特征的方法.我必须承认我只是浏览了这本书,但我不太喜欢他的方法.基本上,他使用函数指针来安排
func(foo);
Run Code Online (Sandbox Code Playgroud)
实际上导致了呼唤
foo.methods->func();
Run Code Online (Sandbox Code Playgroud)
哪个foo.methods是包含函数指针的结构.在这种方法中我不喜欢的是,foo无论如何必须具有全局功能; 也就是说,方法没有被它们所居住的类命名.我的感觉是这很快就会导致混乱:想想两个对象,foo并且bar都有一个方法func但参数数量不同.
所以我试图找到更符合我口味的东西.第一次尝试是以下(我为了简洁省略了声明)
#include <stdio.h>
//Instances of this struct will be my objects
struct foo {
//Properties
int bar;
//Methods
void (* print)(struct foo self);
void (* printSum)(struct foo self, int delta);
};
//Here is the actual implementation of the methods
static void printFoo(struct foo self) {
printf("This is bar: %d\n", self.bar);
}
static void printSumFoo(struct foo self, int delta) { …Run Code Online (Sandbox Code Playgroud) 我有一个网站,手工编辑一些页面.当缺少其中一个模板时,它只是意味着页面不存在,所以我想显示错误404.
相反,我得到一个例外TemplateDoesNotExist.
有没有办法告诉Django在找不到模板时显示错误404?
我正在尝试使用Spark来处理来自HBase表的数据.此博客文章提供了如何使用NewHadoopAPI从任何Hadoop读取数据的示例InputFormat.
我做了什么
由于我需要多次执行此操作,因此我尝试使用implicits进行丰富SparkContext,以便我可以从HBase中的给定列集中获取RDD.我写了以下帮助:
trait HBaseReadSupport {
implicit def toHBaseSC(sc: SparkContext) = new HBaseSC(sc)
implicit def bytes2string(bytes: Array[Byte]) = new String(bytes)
}
final class HBaseSC(sc: SparkContext) extends Serializable {
def extract[A](data: Map[String, List[String]], result: Result, interpret: Array[Byte] => A) =
data map { case (cf, columns) =>
val content = columns map { column =>
val cell = result.getColumnLatestCell(cf.getBytes, column.getBytes)
column -> interpret(CellUtil.cloneValue(cell))
} toMap
cf -> content
}
def makeConf(table: String) = …Run Code Online (Sandbox Code Playgroud) 我在构建我的python项目时遇到了一些问题.目前它是同一文件夹中的一堆文件.我试着像它一样构造它
proj/
__init__.py
foo.py
...
bar/
__init__.py
foobar.py
...
tests/
foo_test.py
foobar_test.py
...
Run Code Online (Sandbox Code Playgroud)
问题是我无法从内部目录导入外部目录中的模块.这对测试尤其烦人.
我已经阅读了关于相关进口的PEP 328和关于主要模块的相对进口的PEP 366.但是这两种方法都要求基础包在我的PYTHONPATH中.确实,我得到以下错误
ValueError:在非包中尝试相对导入.
所以我在测试文件的顶部添加了以下样板代码
import os, sys
sys.path.append(os.path.join(os.getcwd(), os.path.pardir))
Run Code Online (Sandbox Code Playgroud)
我仍然得到同样的错误.什么是正确的方法
编辑根据评论中的要求,我添加了一个失败的示例导入(在文件中foo_test.py)
import os, sys
sys.path.append(os.path.join(os.getcwd(), os.path.pardir))
from ..foo import Foo
Run Code Online (Sandbox Code Playgroud) python ×4
javascript ×2
scala ×2
apache-spark ×1
c ×1
cakephp ×1
django ×1
hbase ×1
inheritance ×1
model ×1
oop ×1
package ×1
prototype ×1
scalaz ×1
scalaz7 ×1
setinterval ×1