首先,我理解编程和对象,但以下对我来说在PHP中没有多大意义.
在PHP中,我们使用&运算符来检索对变量的引用.我理解一个引用是一种用不同变量引用相同"事物"的方法.如果我说的话
$b = 1;
$a =& $b;
$a = 3;
echo $b;
Run Code Online (Sandbox Code Playgroud)
将输出3,因为对$ a的更改与对$ b的更改相同.反过来:
$b = 1;
$a = $b;
$a = 3;
echo $b;
Run Code Online (Sandbox Code Playgroud)
应该输出1.
如果是这种情况,为什么需要克隆关键字?在我看来,如果我设置
$obj_a = $obj_b 然后对$ obj_a所做的更改不应该影响$ obj_b,相反,$ obj_a =&$ obj_b应该指向同一个对象,因此对$ obj_a所做的更改会影响$ obj_b.
然而,在PHP中,似乎$ obj_a DO上的某些操作会影响$ obj_b,即使在没有引用运算符的情况下进行了分配($obj_a = $obj_b).这对我今天在使用DateTime对象时造成了令人沮丧的问题,我最终基本上通过这样做来修复:
$obj_a = clone $obj_b
Run Code Online (Sandbox Code Playgroud)
但是我编写的大多数PHP代码似乎都不需要像这种情况那样的显式克隆,没有它就可以正常工作.这里发生了什么?为什么PHP必须如此笨重?
我在连接数据库服务器时遇到问题.数据库服务器不是本地的,我通过其IP地址连接.
它在我的开发机器上运行良好.将网站发布到我的服务器后,它无法连接到我的数据库服务器.
建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)
为什么我的发布服务器无法连接到数据库服务器,而它可以通过开发机器正常工作?
任何人都可以确认setRegion"捕捉"到预定义的缩放级别,以及此行为是否与设计(虽然未记录)或已知错误一样?具体来说,似乎setRegion捕捉到与用户双击地图时使用的缩放级别相对应的相同缩放级别.
我正在尝试恢复以前保存的区域,但如果通过缩放缩放而不是双击缩放设置保存的区域,则此行为无法实现.
如果我在地图的当前区域调用regionThatFits,那么在mapkit方面的事情就会被打破的一个重要线索就是如此.它应该返回相同的区域(因为它显然适合地图的框架),但它返回的区域对应于下一个更高的预定义缩放级别.
setVisibleMapRect的行为类似.
任何进一步的见解或信息将不胜感激.
我找到了这些相关的帖子,但都没有包含解决方案或确切的确认,这实际上是一个mapkit错误:
编辑:
这是一个演示该问题的示例.所有值对我的地图视图的宽高比都有效:
MKCoordinateRegion initialRegion;
initialRegion.center.latitude = 47.700200f;
initialRegion.center.longitude = -122.367109f;
initialRegion.span.latitudeDelta = 0.065189f;
initialRegion.span.longitudeDelta = 0.067318f;
[map setRegion:initialRegion animated:NO];
NSLog(@"DEBUG initialRegion: %f %f %f %f", initialRegion.center.latitude, initialRegion.center.longitude, initialRegion.span.latitudeDelta, initialRegion.span.longitudeDelta);
NSLog(@"DEBUG map.region: %f %f %f %f", map.region.center.latitude, map.region.center.longitude, map.region.span.latitudeDelta, map.region.span.longitudeDelta);
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
DEBUG initialRegion: 47.700199 -122.367111 0.065189 0.067318
DEBUG map.region: 47.700289 -122.367096 0.106287 0.109863
Run Code Online (Sandbox Code Playgroud)
请注意纬度/经度增量值的差异.地图的值几乎是我要求的两倍.较大的值对应于用户双击地图时使用的缩放级别之一.
我目前正在尝试使用MVVM模式创建一个小应用程序.但是我真的不知道如何在我的ViewModel中正确包装聚合的Model类.从我对MVVM的了解不多,您不应该将ViewModel中的Models公开为属性,否则您可以直接从View中绑定到Model.所以我似乎必须将嵌套模型包装在另一个ViewModel中,但是这会在稍后同步Model和ViewModel时带来一些问题.
那么你如何有效地做到这一点?
我举一个简短的例子.假设我有以下模型类:
public class Bar
{
public string Name { get; set; }
}
public class Foo
{
public Bar NestedBar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在我相应地创建了两个ViewModel类,包装了Models,但遇到了FooViewModel的问题:
public class BarViewModel
{
private Bar _bar;
public string Name
{
get { return _bar.Name; }
set { _bar.Name = value; }
}
}
public class FooViewModel
{
private Foo _foo;
public BarViewModel Bar
{
get { return ???; }
set { ??? = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
现在我如何处理FooViewModel的Bar属性?为了"get"工作,我需要返回一个BarViewModel实例.我是否在FooViewModel中创建了该类型的新字段,并将_foo.NestedBar对象包装在那里?对该字段属性的更改应向下传播到基础Bar实例,对吧?
如果我需要将另一个BarViewModel实例分配给该属性,如下所示:
foo.Bar = …Run Code Online (Sandbox Code Playgroud) 可能重复:
如何测试目录是否隐藏在C#中?
DirectoryInfo dir = new DirectoryInfo(@"c:\test");
if ((dir.Attributes & FileAttributes.Hidden) == (FileAttributes.Hidden))
{
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
使用此if语句,我想测试目录是否被隐藏.虽然目录确实是隐藏的,但是我的程序没有进入do stuff,因为只设置了属性的目录标志.有什么建议?
我最近开始使用F#进行"实际工作",并重新发现了不可变数据结构的美妙之处,例如F#中的歧视联盟和记录.我还发现它们很容易从C#中使用,特别是因为它们不需要对F#运行时有任何直接依赖.但是,在表示这些结构中的列表时,我还没有找到理想的解决方案.
我的第一次尝试是将列表键入为seq <'a>(在C#世界中为IEnumerable),它提供了一个很好的通用集合接口,而不像ICollection <>及其朋友那样导出任何改变集合的方法.但是,由于我无法控制受歧视的联合或记录的构造函数,因此这些类型的实例的创建者可以提供可能在使用时更改或抛出的IEnumerable <>实现(例如LINQ表达式) .IEnumerable <>因此不会给编译器提供任何帮助,证明该值是不可变的,因此线程安全.
我目前的策略是使用F#list类型,它确保了一个不可变的集合,但是在F#运行时添加了一个依赖项,当从非F#项目中使用它时看起来有些偏差.但它确实允许IEnumerable <>没有的F#模式匹配.它也没有在列表的实际表示中给出任何选择,并且在某些情况下(例如原始值的大列表),F#列表表示并不真正适合.
我真正希望看到的是.NET中的不可变数组类型,表示与普通数组一样紧凑,但编译器保证不会发生变异.我会像C++一样欢迎const,尽管它可能不太可能发生.与此同时,我还有其他选择吗?
我希望在我的应用中有一个"更改主题"功能.如果我在onCreate()中调用setTheme(),则有一个问题.
在我启动应用程序后的那一刻,一个普通的白色背景出现了一秒钟(因为我在清单中设置了浅色主题).之后,将显示我的活动的完整布局 - 根据用户的主题偏好,它可以是白色或黑色背景.
有什么方法可以改变发射后是否出现白色或黑色背景?
我正在用gcc 3.4构建ubuntu-8.04,我需要生成.i文件,它们是gcc预处理器的输出.我已经尝试添加--save-temps标志但这只生成顶级目录的.i文件,即源,并且似乎不会递归地传递到子目录.我还尝试了-E标志,它应该输出预处理文件并停止编译,但这也没有生成文件.
我特别希望为net/core中的源生成.i文件.
任何帮助表示赞赏.谢谢!!
我正在做一些关于如何将文章聚集成"新闻报道"的新闻.
看一下之前关于这个问题的问题,我经常看到它建议简单地从一篇文章中提取一个单词的向量,如果它们在文章的某些部分(例如标题)中,则更多地加权一些单词,然后使用类似k-means算法的东西来聚类文章.
但这导致了几个问题:
有了k-means,你怎么知道k应该是多少?在动态新闻环境中,您可能会有不同数量的故事,并且您不会事先知道一组文章所代表的故事数量.
使用分层聚类算法,您如何确定将哪些聚类用作故事?您将在树的底部有一些集群,这些集群只是单个文章,您显然不想使用这些集群,并且树的根目录中包含所有文章的集群,这也是您不想要的......但是你怎么知道它们之间的哪些集群应该被用来代表故事呢?
最后,使用k-means或hierarchal算法,我读过的大多数文献似乎都假设您有一个预设的文档集合,您想要聚类,并将它们全部聚集在一起.但是,你经常会有新文章进入的情况如何.怎么了?你是否必须从头开始集中所有文章,现在还有一个?这就是为什么我想知道是否有方法可以让你在不重新聚类的情况下"添加"文章.我无法想象这是非常有效的.