是否有内置的方法,函数,API,普遍接受的方式等来转储Objective C中实例化对象的内容,特别是在Apple的Cocoa/Cocoa-Touch环境中?
我希望能够做类似的事情
MyType *the_thing = [[MyType alloc] init];
NSString *the_dump = [the_thing dump]; //pseudo code
NSLog("Dumped Contents: %@", the_dump);
Run Code Online (Sandbox Code Playgroud)
并显示对象的实例变量名称和值,以及可在运行时调用的任何方法.理想情况下,易于阅读的格式.
对于熟悉PHP的开发人员,我基本上寻找等效的反射函数(var_dump(),get_class_methods())和OO Reflection API.
正则表达式应如何处理嵌套括号的捕获行为是否存在已定义的行为?更具体地说,您是否可以合理地期望不同的引擎将在第一个位置捕获外括号,并在后续位置捕获括号?
考虑以下PHP代码(使用PCRE正则表达式)
<?php
$test_string = 'I want to test sub patterns';
preg_match('{(I (want) (to) test) sub (patterns)}', $test_string, $matches);
print_r($matches);
?>
Array
(
[0] => I want to test sub patterns //entire pattern
[1] => I want to test //entire outer parenthesis
[2] => want //first inner
[3] => to //second inner
[4] => patterns //next parentheses set
)
Run Code Online (Sandbox Code Playgroud)
首先捕获整个带括号的表达式(我想测试),然后接下来捕获内部带括号的模式("想要"和"到").这具有逻辑意义,但我可以看到一个同样合乎逻辑的情况,首先捕获子括号,然后捕获整个模式.
那么,这是"首先捕获整个事物"在正则表达式引擎中定义的行为,还是取决于模式的上下文和/或引擎的行为(PCRE与C#的不同之处不同于Java的不同比等)?
是否有一些*nix工具或perl/php库可以让您轻松创建如下所示的目录树可视化?
www
|-- private
| |-- app
| | |-- php
| | | |-- classes
| | | +-- scripts
| | |-- settings
| | +-- sql
| +-- lib
| +-- ZendFramework-HEAD
+-- public
|-- css
|-- images
+-- scripts
Run Code Online (Sandbox Code Playgroud) PHP中是否有一个函数和/或对象和/或扩展,可以让您查看当前作用域中定义的所有变量?就像是:
var_export($GLOBALS)
Run Code Online (Sandbox Code Playgroud)
但只显示当前符号表中的变量.
请考虑以下HTML.如果我有一个对<button>元素的JSON引用,我怎样才能在两种情况下获得对外部<tr>元素的引用
<table id="my-table">
<tr>
<td>
<button>Foo</button>
</td>
<td>
<div>
<button>Bar</button>
</div>
</td>
</tr>
</table>
<script type="text/js">
$('#table button').click(function(){
//$(this).parent().parent() will work for the first row
//$(this).parent().parent().parent() will work for the second row
//is there a selector or some magic json one liner that will climb
//the DOM tree until it hits a TR, or do I have to code this myself
//each time?
//$(this).????
});
</script>
Run Code Online (Sandbox Code Playgroud)
我知道每种条件我都可以处于特殊情况,但我更感兴趣的是"无论你遇到多么深刻,爬上树直到你找到元素X"的风格解决方案.像这样的东西,但更多jQuery喜欢/更少详细
var climb = function(node, str_rule){
if($(node).is(str_rule)){
return node;
}
else if($(node).is('body')){
return false; …Run Code Online (Sandbox Code Playgroud) 可能重复:
什么是C宏有用?
每隔几个月我就会学到一些C,这是我的废话大学编程教育从未涉及过的.今天它是宏.我对宏的基本理解是它们是一个简单的搜索和替换,它会在编译之前发生在代码上.我无法理解你为什么要使用宏.我正在看的大多数基本例子都是这样的
TEST(a,%d);
#define TEST(a,b) printf(" The value of " #a " = " #b " \n", a)
//which expands to
printf(" The value of a = %d \n",a);
Run Code Online (Sandbox Code Playgroud)
(例子来自这里)
从我的新手角度来看,似乎定义一个新函数会给你相同的结果.我可以看到历史上宏如何在易于搜索和替换之前的几天内快速修改大量源代码,但有些东西告诉我,我错过了一些更重要的观点.
那么宏可以为你做什么样的有用的事情呢?
Ruby dabbler/newbie在这里不熟悉生态系统,如果这是其中一个超级问题,那么道歉.
有没有办法查看gem安装的所有文件和/或源代码?也就是说,我跑了
$ gem install sass
Run Code Online (Sandbox Code Playgroud)
而sass gem现在是我本地系统的一部分
$ gem list --local
...
sass (3.1.16, 3.1.2)
...
Run Code Online (Sandbox Code Playgroud)
我想知道gem install命令对我的系统的影响.是否有命令我可以运行以查看gem安装的所有文件?
一些google搜索后,man gem和gem help commands,我发现了contents命令.
$ gem content sass
但是,当我使用前面提到的sass gem运行此命令时,我得到以下结果
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/engine_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/functions_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/extend_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/logger_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/css2sass_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/conversion_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/script_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/util/subset_map_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/util/multibyte_string_scanner_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/callbacks_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/importer_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/scss/css_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/scss/scss_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/scss/rx_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/util_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/script_conversion_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/less_conversion_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/cache_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/test/sass/plugin_test.rb
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/bin/sass
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/bin/sass-convert
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.16/bin/scss
Run Code Online (Sandbox Code Playgroud)
但是,这个列表似乎不完整,因为我知道有文件
.../.rvm/gems/ruby-1.9.2-p180/gems/sass-3.1.2/lib/
Run Code Online (Sandbox Code Playgroud)
为什么不contents显示文件lib?
gem安装程序是否可以在gems文件夹之外安装文件?
是否有一个命令可以显示由gem安装的所有内容?
查看PHP Composer install命令的帮助,我看到以下两个选项
$ composer help install
Options:
--prefer-source Forces installation from package sources when possible, including VCS information.
--prefer-dist Forces installation from package dist even for dev versions.
Run Code Online (Sandbox Code Playgroud)
什么是"dist"装置?我在作曲家网站和谷歌周围戳了一下,但似乎没有任何解决这个问题(所以我认为这对于熟悉Composer的人来说是核心和显而易见的 - 为新手问题道歉)
我假设--prefer-sourceComposer会向Packagist询问存储库位置,然后checkout/clone/export/etc. 项目本身.
如果是这样,那么--prefer-dist从哪里下载?它下载了什么?
当我安装Xdebug时pecl,它将以下行添加到我的php.ini文件中.
extension="xdebug.so"
Run Code Online (Sandbox Code Playgroud)
以及我用过的所有东西.直到今天.
今天我在设置Xdebug以进行交互式调试时遇到了麻烦.直到我改变了上面的内容,我才能得到任何工作
zend_extension="/usr/local/lib/php/extensions/xdebug.so"
Run Code Online (Sandbox Code Playgroud)
(警告:我认为这是让我工作的原因,但我不是百分百肯定)
这引起了我的疑问.通过extension=vs. 加载扩展有什么区别zend_extension?
当我使用fputcsv写一行到打开的文件句柄时,PHP会将一个封闭的字符添加到它认为需要的任何列,但是会留下没有这些外壳的其他列.
例如,您最终可能会得到这样的一行
11,"Bob ",Jenkins,"200 main st. USA ",etc
Run Code Online (Sandbox Code Playgroud)
如果没有将虚假空间附加到每个字段的末尾,是否有任何方法可以强制fputcsv始终用外壳包含列(默认为")"字符?