我需要打印一个ULONGLONG值(unsigned __int64).我应该使用什么格式printf?我%llu在另一个问题中找到了,但他们说它只适用于linux.
谢谢你的帮助.
UTF-32和UCS-4有什么区别?是不是UTF-32应该是固定宽度的编码?
有没有办法检查数组索引是否存在或为空?
isset()不会告诉您索引是否存在或存在但是为空.如果我这样做:isset($array[$index]) || is_null($array[$index])它将无法工作,因为如果索引不存在,is_null将崩溃.
我该怎么办?还有一种方法可以检查是否存在某些东西,无论它是否设置为null?
我想在我的类上链接方法调用,如下所示:
new Obj($args, $if, $any)->foo()->bar();
Run Code Online (Sandbox Code Playgroud)
不幸的是,我必须将结构括在括号内:
(new Obj($args, $if, $any))->foo()->bar();
Run Code Online (Sandbox Code Playgroud)
所以我想有一个特点,我可以在每个我想要能够做的事情的类中重复使用:
Obj::create($args, $if, $any)->foo()->bar();
Run Code Online (Sandbox Code Playgroud)
我希望它是一个特征,所以我的类仍然可以从其他类继承.我来到这一点:
trait Create
{
public static final function create()
{
$reflect = new ReflectionClass(/* self ? static ? Anything else ? */);
return $reflect->newInstanceArgs(func_get_args());
}
}
class Obj
{
use Create;
// ...
}
Run Code Online (Sandbox Code Playgroud)
但似乎特征不处理自我或静态关键字,我不能这样做,get_class($this)因为这是静态的.有没有明确的方法来做我想要的事情?
谢谢阅读.
编辑:对于那些想知道的人,这就是为什么我希望它成为一个特征而不是一个抽象的基类:
$database = (new Database())
->addTable((new Table())
->addColumn((new Column('id', 'int'))
->setAttribute('primary', true)
->setAttribute('unsigned', true)
->setAttribute('auto_increment', true))
->addColumn(new Column('login', 'varchar'))
->addColumn(new Column('password', 'varchar')));
$database = Database::create()
->addTable(Table::create()
->addColumn(Column::create('id', 'int') …Run Code Online (Sandbox Code Playgroud) 我想知道Lua如何使用该tostring()函数处理数字到字符串转换.
它将转换为int(作为字符串),如果数字是圆的(即if number == (int) number)或是否总是输出一个真实的(如字符串)10.0?
我需要模仿Lua tostring在C中的确切行为,而不使用Lua C API,因为在这种情况下,我没有使用lua_State.
我想编写一个我自己的日志库,它为日志条目的发送位置提供抽象.
C++的IO库已经用std::stringstream和提供了那种抽象std::fstream.我也希望能够从/向套接字读/写.
我读到扩展标准库的正确方法是继承std::basic_streambuf.我不明白的是,如果继承std::basic_streambuf像std::basic_filebuf呢,哪里是需要的std::ifsream,std::ofstream和std::fstream班?我不能只用一个子类的实例替换某些流的缓冲区,该子类的std::basic_streambuf输出输出到我想要的地方吗?
到目前为止,我已经完成了以下工作,但我真的不确定我在做什么.以下设计是否正确?
template< typename char_type, typename traits_type = std::char_traits< char_type > >
class basic_sock_streambuf : public std::basic_streambuf< char_type, traits_type >
{
public:
basic_sock_streambuf()
{
}
~basic_sock_streambuf()
{
}
int overflow (int c = EOF)
{
fputc( c, stdout ); // Temporary.
return traits_type::to_int_type( c );
}
int underflow()
{
return fgetc( stdout ); // Temporary.
}
int sync()
{
return …Run Code Online (Sandbox Code Playgroud) 我不确定完全理解在类方法中使用的const关键字背后的哲学.
我一直认为在类方法的签名中使用const关键字意味着此方法不会修改它所调用的对象的字段.但是当我们使用例如一个向量时,operator []的重载不是const:
whateverT & vector<whateverT>::operator [] ( size_t pos )
Run Code Online (Sandbox Code Playgroud)
无论您对给定的引用做什么,它都不会对向量的字段执行任何修改,即使引用的项目被修改也是如此.
另一个例子 :
template<class T> class Array
{
T * _items;
T & operator [] ( size_t pos ) const
{
return _items[ pos ];
}
}
Run Code Online (Sandbox Code Playgroud)
我可以在这里使用const关键字,因为_items的值没有被修改(无论我们用它指向的是什么).对于编译器来说这是正确的,但如果我访问其中一个项并修改它,operator []将允许修改数组,即使它应该是const,即假设不修改数组的"内容".
在这种情况下该怎么办?使用或不使用const关键字?
谢谢 :)
我在Lua文档中发现了一段奇怪的代码:
function trim8(s)
local i1,i2 = find(s,'^%s*')
if i2 >= i1 then s = sub(s,i2+1) end
local i1,i2 = find(s,'%s*$')
if i2 >= i1 then s = sub(s,1,i1-1) end
return s
end
Run Code Online (Sandbox Code Playgroud)
为什么local再次使用i1和i2?它们是否已在局部变量中声明?local每次要分配关键字时,是否必须重复关键字?
我有两个问题:
要从PDO预处理语句中受益,我应该首先使用PDO对象准备语句:
$ statement = $ pdo-> prepare($ query,$ bindings);
然后将这个$语句存储在$ _SESSION中并重用此语句,或者下次我想要执行相同的查询(具有不同的绑定值)时,我是否应该再次执行相同的操作(PDO :: prepare)?
假设我们有一个包含多个受保护和/或公共方法的类.我需要在每次调用方法时执行检查.每次调用方法时我都可以检查:
class Object
{
// Methods
}
$o = new Object();
if($mayAccess) $o->someMethod();
Run Code Online (Sandbox Code Playgroud)
要么
if($mayAccess) $this->someMethod();
Run Code Online (Sandbox Code Playgroud)
但我希望开发人员不必考虑它,也不要写它.我已经考虑过使用__call来做:
class Object
{
public function __call($methodName, $args)
{
if($mayAccess) call_user_func_array($this->$methodName, $args);
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果我从类中调用该方法,则不会调用__call,因为它仅在调用非可见方法时才起作用.
是否有一种干净的方法来隐藏内部和外部呼叫的检查?再次,目标是确保开发人员在调用方法时不会忘记这样做.
提前致谢 :)
EDIT :
Run Code Online (Sandbox Code Playgroud)
我有另一种方法:
class Object
{
public function __call($methodName, $args)
{
if($mayAccess) call_user_func_array($methodName, $args);
}
}
function someMethod() { }
Run Code Online (Sandbox Code Playgroud)
但我将无法使用$ this,这意味着没有受保护的方法,我确实需要.
php ×4
c++ ×3
c ×2
lua ×2
methods ×2
arrays ×1
call ×1
char ×1
class ×1
const ×1
constructor ×1
encoding ×1
indexing ×1
inheritance ×1
iostream ×1
isset ×1
null ×1
pdo ×1
printf ×1
semantics ×1
session ×1
static ×1
stream ×1
streambuf ×1
string ×1
tostring ×1
traits ×1
unicode ×1
unsigned ×1
utf ×1
windows ×1