作为一个相当绿色的Java编码器,我为自己设置了一个尝试编写简单文本冒险的巨大挑战.不出所料,我已经遇到了困难!
我正在尝试为我的Location类提供一个属性来存储它包含的出口.我为此使用了一个布尔数组,基本上保存表示每个出口的true/false值.我并不完全相信
a)这是最有效的方法
b)我正在使用正确的代码来填充数组.
我会很感激任何和所有的反馈,即使它是一个完整的代码超载!
目前,在实例化一个Location时,我会生成一个String,我将其发送到setExits方法:
String e = "N S U";
secretRoom.setExits(e);
Run Code Online (Sandbox Code Playgroud)
在Location类中,setExits如下所示:
public void setExits(String e) {
if (e.contains("N"))
bexits[0] = true;
else if (e.contains("W"))
bexits[1] = true;
else if (e.contains("S"))
bexits[2] = true;
else if (e.contains("E"))
bexits[3] = true;
else if (e.contains("U"))
bexits[4] = true;
else if (e.contains("D"))
bexits[5] = true;
}
Run Code Online (Sandbox Code Playgroud)
我会说实话,我认为这看起来特别笨重,但我想不出另一种方法.我现在还不完全确定如何编写getExits方法......
欢迎任何帮助!
我最近一直在玩Flexbox,一般来说,这绝对是惊人的.我最近遇到了一个问题,我似乎无法提供包装任何垂直间距的弹性项目.
我尝试过使用:
align-content: space-between;
Run Code Online (Sandbox Code Playgroud)
但这似乎没有做任何事情.从我已经完成的阅读中,如果我的弹性容器高于其中包含的元素(这是正确的吗?),这似乎只会起作用.如果是这样,那么我就不必为我的flex容器设置高度,似乎打败了使用flexbox的目的?
我能想到做这项工作的唯一方法是给内部元素留下余量,但这似乎也打败了目的.
希望我错过了一些相当明显的东西 - 这里是一个指向codepen的链接:http://codepen.io/lordchancellor/pen/pgMEPz
另外,这是我的代码:
HTML:
<div class="container">
<div class="col-sm-12">
<h1>Flexbox Wrapping</h1>
<div class="flexContainer">
<div class="flexLabel">This is a flex label</div>
<a class="btn btn-primary">Button 1</a>
<a class="btn btn-warning">Button 2</a>
<a class="btn btn-success">Button 3</a>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.flexContainer {
display: flex;
flex-wrap: wrap;
align-items: center;
align-content: space-between;
justify-content: center;
}
.flexContainer .flexLabel {
flex-basis: 150px;
flex-shrink: 0;
}
Run Code Online (Sandbox Code Playgroud)
编辑 - 只是在这里添加一些细节,因为我不确定我是否足够好.
在我的大项目中,我有一些块级元素,使用flexbox排成一行.然而,由于用户可能减小屏幕宽度,因此需要一些响应性.此时,我希望我的元素开始堆叠(因此换行).然而,当元素开始堆叠时,它们都是垂直接触的,我希望在那里有间距.
它开始看起来像顶部和底部边距可能是解决这个问题的唯一方法 - 但是我想知道是否有以Flexbox为中心的方法来实现这一点.
我正在尝试在Swift中编写一个简单的待办事项列表,它将列表存储为字符串数组,然后在应用程序加载时从内存中调用它.
我有以下代码:
var itemList = [String]()
func loadData() -> [String] {
var arr = [String]()
if NSUserDefaults.standardUserDefaults().objectForKey("storedData") != nil {
arr = NSUserDefaults.standardUserDefaults().objectForKey("storedData")! as! [String]
}
else {
arr = ["Nothing to do..."]
}
return arr
}
func saveData(arr: [String]) {
NSUserDefaults.standardUserDefaults().setObject(arr, forKey: "storedData")
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是在何处调用loadData().这是一个具有两个视图控制器的应用程序(一个用于列表,一个用于添加项目设置),因此如果我在主视图控制器的viewDidLoad()中放置loadData()调用,则从内存中调用该数组每次切换回主视图控制器时(并覆盖).
在应用程序启动时,最好的地方在哪里调用它以便它只加载一次?
我正在尝试找到一种router-outlet根据用户的角色有条件地渲染子路由中的组件的方法。
例如,我有一个 DashboardComponent,其中包含一个router-outlet. 我希望在 child 中呈现的组件router-outlet根据用户角色而有所不同,该角色是通过令牌传入的,而无需指定其他路由。
我希望尝试在接近此的地方编写我的路线:
{
path: 'dashboard',
component: DashboardComponent,
children: [
{ path: '', component: DataViewsComponent }, // For standard user role
{ path: '', component: AdminViewsComponent } // For the admin user role
]
}
Run Code Online (Sandbox Code Playgroud)
当然,这种确切的模式是行不通的,因为路由器只看到两条相同的路由路径。
我已经成功编写了一个服务,该服务使用该canActivate属性来检查用户的角色并根据角色转发到不同的路由:
@Injectable()
export class RoleRouteRedirectService implements CanActivate {
roleRoutingPermissions: any = {
// Will contain redirects for every route in the app
// For this example, only contains reroutes for the dashboard …Run Code Online (Sandbox Code Playgroud)