前言:我目前正在学习一门显然是用 LISP 教授的浓缩课程,而且我一生中从未使用过 LISP,所以我不得不在一个周末学习语言。我提前为糟糕的代码道歉。我只是对 LISP 的语法足够熟悉,可以使代码正常工作,仅此而已。
我目前正在开发一个解决地图着色问题的程序。此代码采用一个序列,其中每个子序列的第一个元素是状态,第二个元素表示颜色。例如:'((AR) (BG) (CG) (DY) (EB) (FB)) 然后检查以确保没有状态与它所约束的状态(由约束列表定义)具有相同的颜色。我知道可能有很多更简洁更简单的方法来做到这一点,但我目前正在努力的是让我的 dolist 循环在满足 if 语句时立即返回值 T。到目前为止,我一直无法让函数简单地返回一个值,并且不得不求助于这种将变量设置为 true 并等待循环完成以使代码工作的非常丑陋/错误的方法。一世'
(setq constraint '((A (B C E)) (B (A E F)) (C (A E F)) (D (F)) (E (A B C F)) (F (B C D E))))
(defun check_constraint (f s)
(setf ans nil)
(dolist (state constraint)
(if (eq (first state) f)
(if (search (list s) (second state))
(setf ans T) ;;where I want it to just return T
)
) …Run Code Online (Sandbox Code Playgroud) 因此,我对 C#/XAML 相当陌生,并且一直在尝试通过重写旧项目来自学 MVVM。我遇到了一个问题,应该将用户控件添加到统一网格中。如果我自己实现用户控件,它会显示得很好,但如果我将其添加到 ObservableCollection,然后尝试将其绑定到uniformgrid,则会显示用户控件的路径,而不是实际的 UI 元素。不幸的是,我对 C# 和 MVVM 还很陌生,无法确定具体是什么问题,这使得在线搜索变得困难。
<UserControl x:Class="CMS.Views.MonthView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:CMS.Views"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<ItemsControl ItemsSource="{Binding Dates}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid IsItemsHost="True" Columns="7"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
月视图.cs
namespace CMS.Views
{
public partial class MonthView : UserControl
{
public MonthView()
{
InitializeComponent();
MonthViewModel monthViewModelObject = MonthViewModel.GetMonthViewModel();
this.DataContext = monthViewModelObject;
}
}
}
Run Code Online (Sandbox Code Playgroud)
月视图模型
namespace CMS.ViewModels
{
class MonthViewModel
{
private readonly ObservableCollection<DayViewModel> _dates = new ObservableCollection<DayViewModel>();
public IReadOnlyCollection<DayViewModel> Dates
{ …Run Code Online (Sandbox Code Playgroud)