当我创建类时,简单的构造函数往往是常态.在我目前的一个项目,一个电影库,我有一个Movie
域对象.它有许多属性,导致构造函数如下:
public Movie(string title, int year, Genre genre, int length, IEnumerable<string> actors)
{
_title = title;
_year = year;
_genre = genre;
_length = length;
_actors = new List<string>(actors);
}
Run Code Online (Sandbox Code Playgroud)
这并不可怕,但也不简单.是否值得使用工厂方法(static Movie CreateMovie(...)
)或可能是对象构建器?是否有用于实例化域类的典型模式?
更新:感谢您的回复.我最初可能是在思考这个问题,尽管我已经学到了一些在更复杂的情况下会有用的东西.我现在的解决方案是将标题作为唯一必需的参数,其余的作为命名/可选参数.这似乎是构建此域对象的全面理想方式.
我正在尝试将选择器应用于ListView,以便那些没有触摸屏的人可以轻松浏览我的应用程序.问题是,通过将选择器应用于ListView,它似乎只将背景颜色应用于整个列表,而不是其中的项目.
有任何想法吗?这是一些代码:
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:listSelector="@drawable/listselector"
/>
<TextView android:id="@android:id/empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="There are no Clients yet."
/>
Run Code Online (Sandbox Code Playgroud)
drawable文件夹中的listselector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector
android:id="@+id/myselector"
xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Non focused states -->
<item
android:state_focused="false"
android:state_selected="false"
android:state_pressed="false"
android:drawable="@color/darkblue" />
<item
android:state_focused="false"
android:state_selected="true"
android:state_pressed="false"
android:drawable="@color/green" />
<!-- Focused states -->
<item
android:state_focused="true"
android:state_selected="false"
android:state_pressed="false"
android:drawable="@color/green" />
<item
android:state_focused="true"
android:state_selected="true"
android:state_pressed="false"
android:drawable="@color/green" />
<!-- Pressed -->
<item
android:state_pressed="true"
android:drawable="@color/green" />
</selector>
Run Code Online (Sandbox Code Playgroud) 所以这个Python问题一直给我带来问题,因为我已经尝试将代码重构为不同的文件.我有一个名为object.py的文件,其中相关的代码是:
class Object:
#this is a generic object: the player, a monster, an item, the stairs...
#it's always represented by a character on screen.
def __init__(self, x, y, char, color):
self.x = x
self.y = y
self.char = char
self.color = color
def move(self, dx, dy):
#move by the given amount, if the destination is not blocked
#if not map[self.x + dx][self.y + dy].blocked:
self.x += dx
self.y += dy
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试专门编译此文件时,我收到此错误:
TypeError: unbound method __init__() must be called with Object …
Run Code Online (Sandbox Code Playgroud) 我一直在研究如何执行此操作很长时间,但是我一直未能就此问题获得直接的答案,因此希望您其中的StackOverflow用户能够在这里为我提供帮助。我有一个名为CategoryList的WPF ListBox和一个名为ProgramsList.sdf的SDF数据库(有两个名为CategoryList和ProgramsList的表)。我希望我的程序要做的是从CategoryList表中获取类别名称,并将其在名为CategoryList的ListBox控件中列出。
这是我尝试过的代码,但这只会导致程序崩溃。
SqlConnection myConnection = new SqlConnection("Data Source=" + AppDomain.CurrentDomain.BaseDirectory + "ProgramsList.sdf");
SqlDataReader myReader = null;
myConnection.Open();
CategoryList.Items.Clear();
SqlDataReader dr = new SqlCommand("SELECT Name FROM CategoryList ORDER BY Name DESC", myConnection).ExecuteReader();
while (myReader.Read())
{
CategoryList.Items.Add(dr.GetInt32(0));
}
myConnection.Close();
Run Code Online (Sandbox Code Playgroud)
谁能帮我?提前致谢!
我有一张地图声明:
<!-- SOME MAP -->
<util:map id="someMap" map-class="java.util.HashMap"
key-type="java.lang.String" value-type="java.lang.String" >
<entry key="0" value="SOME VALUE" />
<entry key="1" value="SOME VALUE 2" />
<entry key="default" value="SOME VALUE 3" />
</util:map>
<!-- SOME MAP REFERENCE -->
<util:map id="someMapRef" map-class="java.util.HashMap"
key-type="java.lang.String" value-type="java.util.HashMap" >
<entry key="0" value ref = "someMap" />
<entry key="default" value="SOME VALUE" />
</util:map>
Run Code Online (Sandbox Code Playgroud)
这有什么问题?有什么建议吗?
我有一个关于matplotlib条的问题.我已经制作了一些条形图,但我不知道为什么,这个在顶部留下了一个巨大的空白区域.
代码类似于我制作的其他图形,他们没有这个问题.
如果有人有任何想法,我感谢你的帮助.
x = matplotlib.numpy.arange(0, max(total))
ind = matplotlib.numpy.arange(len(age_list))
ax.barh(ind, total)
ax.set_yticks(ind)
ax.set_yticklabels(age_list)
Run Code Online (Sandbox Code Playgroud) 我正在构建一个类型的属性列表,以包含在该类型集合的导出中.我想这样做而不使用字符串作为属性名称.只有该类型的某些属性才会包含在列表中.我想做点什么:
exportPropertyList<JobCard>.Add(jc => jc.CompletionDate, "Date of Completion");
Run Code Online (Sandbox Code Playgroud)
我该如何实现这种通用的Add方法?顺便说一句,字符串是属性的描述.
我有一个广播接收器设置,以便在每次升级我的应用程序后向用户显示弹出消息,或者如果这是第一次安装软件包.我在运行Android 2.2的Droid上测试了这个,作为全新安装和升级我的应用程序之后,以及运行1.5和1.6的模拟器,我看到一切运行正常.
但是,我收到了一个列出以下异常的用户的错误报告:
java.lang.RuntimeException: Unable to instantiate receiver
com.name.pkg.FirstRunBroadcastReceiver: java.lang.ClassNotFoundException: com.name.pkg.app_name.FirstRunBroadcastReceiver in loader dalvik.system.PathClassLoader[/data/app/com.name.pkg.app_name.apk]
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2789)
at android.app.ActivityThread.access$3200(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2083)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.name.pkg.app_name.FirstRunBroadcastReceiver in loader dalvik.system.PathClassLoader[/data/app/com.name.pkg.app_name.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2780)
... 10 more
Run Code Online (Sandbox Code Playgroud)
有人能告诉我为什么我的一个用户收到了这个例外吗?
在我的清单文件中,我有这样的设置:
<receiver android:name=".FirstRunBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REPLACE"/>
<data android:scheme="package" android:path="com.name.pkg.app_name">
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
FirstRunBroadcastReceiver类设置如下:
package com.name.pkg.app_name;
public class FirstRunBroadcastReceiver extends BroadcastReceiver
{
@Override
public void …
Run Code Online (Sandbox Code Playgroud) 有人知道^Bo
在编码字符串的开头是什么意思吗?字符串的其余部分是有效的ASCII.
示例:"^BoHello"
应解释为"Hello"
注意:'^B'
是控制字符0x02
很可能会暴露我是R的新手,但在SPSS中,运行滞后非常容易.显然这是用户错误,但我缺少什么?
x <- sample(c(1:9), 10, replace = T)
y <- lag(x, 1)
ds <- cbind(x, y)
ds
Run Code Online (Sandbox Code Playgroud)
结果是:
x y
[1,] 4 4
[2,] 6 6
[3,] 3 3
[4,] 4 4
[5,] 3 3
[6,] 5 5
[7,] 8 8
[8,] 9 9
[9,] 3 3
[10,] 7 7
Run Code Online (Sandbox Code Playgroud)
我想我会看到:
x y
[1,] 4
[2,] 6 4
[3,] 3 6
[4,] 4 3
[5,] 3 4
[6,] 5 3
[7,] 8 5
[8,] 9 8
[9,] 3 9
[10,] …
Run Code Online (Sandbox Code Playgroud)