我如何定义一个谓词,例如even: Int -> Bool,它接受一个整数并输出它是否为偶数?
我尝试过类似的东西
(set-logic AUFNIRA)
(declare-fun even (Int) Bool)
Run Code Online (Sandbox Code Playgroud)
例如,我想知道如何声明这even(2)是真的。
如何使用 Predicate BooleanExpression 对多对多关系进行内连接?
我有 2 个实体
public class A {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@ManyToMany(fetch = FetchType.LAZY,
cascade = { CascadeType.DETACH, CascadeType.MERGE,
CascadeType.REFRESH, CascadeType.PERSIST})
@JoinTable(name = "a_b_maps",
joinColumns = @JoinColumn(name = "a_id", nullable =
false,referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "b_id", nullable = false,
referencedColumnName = "id")
)
private Set<B> listOfB = new HashSet<B>();
}
public class B {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@ManyToMany(fetch = FetchType.LAZY,
cascade = { CascadeType.DETACH, CascadeType.MERGE,
CascadeType.REFRESH, …Run Code Online (Sandbox Code Playgroud) 我有一个Optional<LocalDate>对象和一个Stream其他日期。
Stream<LocalDate> dates = ...;
Optional<LocalDate> dateOptional = ...;
Run Code Online (Sandbox Code Playgroud)
我想过滤掉可选的所有日期。如果可选项不存在,过滤器不应该做任何事情。
我写过Predicate这样的:
Predicate<LocalDate> predicate = date -> !dateOptional.isPresent() || !date.isAfter(dateOptional.get());
Stream<LocalDate> filteredStream = dates.filter(predicate);
Run Code Online (Sandbox Code Playgroud)
我想避免使用isPresent()和get()。是否有更实用的方式来编写相同的逻辑?我正在使用 Java 8。
虽然我还没有实现 Predicate 接口中的方法 - test - ,但为什么在我的类 - inte 中没有任何主体的情况下执行该方法?
package newone;
import java.util.function.Predicate;
public class inte {
public static void main(String[] args) {
Predicate <Integer> p = i -> (i<19);
System.out.println( p.test(22));
}
@FunctionalInterface
public interface Predicate<T> {
boolean test(T var1);
}
Run Code Online (Sandbox Code Playgroud) 我如何使用以下谓词?
Predicate<Integer> isOdd = n -> n % 2 != 0;
Run Code Online (Sandbox Code Playgroud)
我的尝试:
System.out.println(isOdd(5));
Run Code Online (Sandbox Code Playgroud)
编译器输出:
java: cannot find symbol
symbol: method isOdd(int)
location: class Main
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用带有搜索栏的 SwiftData 框架创建一个视图,用户可以在其中输入飞机的注册信息并动态更新列表。但首先我不确定我是否正确执行(我在网上找不到太多示例)并且收到错误:
通用结构“ForEach”要求“Query<Aircraft, [Aircraft]>”符合“RandomAccessCollection”
struct AirplanePick: View {
@State var addNewPlane = false
@Environment (\.modelContext) var mc
@Binding var planePick: Aircraft?
let dm: DataManager
@Environment(\.presentationMode) var presentationMode
@State var searchTerm: String = ""
var filterPlanes : Query<Aircraft, [Aircraft]>{
var predicate: Predicate<Aircraft>?
if !searchTerm.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
predicate = .init(#Predicate { $0.registration.contains(searchTerm) })
}
return Query(filter: predicate, sort: \.registration)
}
var body: some View {
List {
Text("planes are \(planes.count)")
ForEach(filterPlanes, id: \.self){ plane in
Button {
planePick = plane
self.presentationMode.wrappedValue.dismiss() …Run Code Online (Sandbox Code Playgroud) 我需要测试一个DateTime是在各个单位的某个单位时间的开始.这是我现在使用的代码:
/// ignoring milliseconds all the way down
bool IsMinute(DateTime dt)
{
return dt.Second == 0;
}
bool IsHour(DateTime dt)
{
return dt.Second == 0 && dt.Minute == 0;
}
bool IsDay(DateTime dt)
{
return dt.Date == dt;
}
bool IsMonth(DateTime dt)
{
return dt.Date == dt && dt.Day == 1;
}
bool IsYear(DateTime dt)
{
return dt.Date == dt && dt.DayOfYear == 1;
}
Run Code Online (Sandbox Code Playgroud)
有任何改进的想法吗?
我正在创建一个带代理的简单代码生成器.
为什么我在运行时收到此错误:
绑定目标方法时出错.
在以下代码?
XAML:
<Window x:Class="Parser.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Loaded="Window_Loaded"
Title="Parser" Height="600" Width="800">
<TextBox x:Name="Output"
VerticalScrollBarVisibility="Visible"
Margin="10"/>
</Window>
Run Code Online (Sandbox Code Playgroud)
代码隐藏:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
namespace Parser
{
public partial class Window1 : Window
{
private List<string> _fields;
public Window1()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
_fields = new List<string> { "CustomerID",
"CompanyName",
"ContactName",
"ContactTitle",
"Address",
"City",
"Region",
"PostalCode",
"Country",
"Phone",
"Fax"
};
Output.Text += ParseFieldsWithMethod("BuildAssignmentLines");
Output.Text += ParseFieldsWithMethod("BuildEnabledLines");
}
private string ParseFieldsWithMethod(string theParseMethod) …Run Code Online (Sandbox Code Playgroud) 我有一个继承自unary_function的仿函数类:
template<class T>
class Matcher : public std::unary_function<T, bool>
{
private:
int m_match;
public:
Matcher(int valToMatch) : m_match(valToMatch) { };
bool operator() (T toTest)
{
return T.prop == m_match;
}
}
Run Code Online (Sandbox Code Playgroud)
使用以下某项功能的功能:
void DoStuff(std::unary_function<ThisType, bool> & pred,
vector<ThisType> & stuffToTest)
{
for(vector<ThisType>::iterator it = stuffToTest.begin();
it != stuffToTest.end(); ++it)
{
if(pred(*it)) // <<< Compiler complains here
{
// do stuff
}
}
}
Run Code Online (Sandbox Code Playgroud)
原始呼叫功能:
Matcher myMatcher<ThisType>(n);
// have vector<ThisType> myStuff
DoStuff(myMatcher, myStuff);
Run Code Online (Sandbox Code Playgroud)
据我所知,我有一个模板化仿函数,我正在构建一个具有ThisType类型的实例,我将其传递给期望unary_function参数的函数,并使用ThisType实例调用.
但是编译器抱怨说"术语不会评估为带有1个参数的函数".
我错过了什么?
我有以下字符串列表:
{"纽约","伦敦","巴黎","柏林","纽约"}
我正在尝试使用Guava库,我希望以这样的方式过滤此列表,我将只获得将等于我将提供的字符串的字符串.如果我有一个固定值,让我们说"纽约",我会做以下事情:
Predicate<String> myCity = new Predicate<String>() {
@Override public boolean apply(String city) {
return city == "New York";
}
};
Run Code Online (Sandbox Code Playgroud)
但是,如果我希望return语句是这样的:
return city == myStringVariable
我可以将该城市的论据提供给Predicate或以某种方式结合两个谓词吗?