Правильно ли я понимаю, что curriedSum(1)(2,3) - здесь в качества a - цифра 1, а в качестве b - (2,3) ? А как же c?
А здесь тогда как? curriedSum(1)(2)(3) - где здесь каррирование?
let curriedSum = curry(sum); // сделали функцию sum карируемой.
var one = curriedSum(1) // так как sum ожидает 3 аргумента, то этот вызов вернёт функццию, которая помнит 1 и ожидает ещё 2 аргумента.
var onePlusTwo = one(2) // так как sum ожидает 3 аргумента, то этот вызов вернёт функццию, которая помнит 1 и 2 и ожидает ещё 1 аргумент.
var result = onePlusTwo(3) // так как sum ожидает 3 аргумента, два аргумента уже помнит функция onePlusTwo и мы передаём третий аргумент, то вернёт результат sum(1,2,3)
result == 6 // true
// При этом, мы можем в данном случае снова вызвать onePlusTwo, но уже с другим аргументом,
// и получим соответствующий результат:
onePlusTwo(7) // вернёт 10, так как onePlusTwo помнит 1+2, то есть получим sum(1,2,7) // 10.
(a + b + c) / 2
(a+b+c)/2.00
// Запускал в roslynpad. Тебе возможно придётся убрать вызовы Dump и добавить юзинги
var result1 = CalcualteAreaOfTriangle(11,11,12).Dump("result 1");
var result2 = CalcualteAreaOfTriangle(9,9,19).Dump("result 2");
static double CalcualteAreaOfTriangle(int a, int b, int c)
{
var p = (a + b + c) / 2.00;
p.Dump("p");
var s1 = Math.Sqrt((p * (p - a) * (p - b) * (p - c)).Dump("pre sqrt"));
var s2 = 0.5 * a * b;
if (s1 == s2)
{ // Кстати это почти никогда не будет срабатывать из-за IEEE754
Console.WriteLine("Треугольник прямоугольный");//а точно ли?
}
return s1;
}
Intent tt = new Intent(this, SettingsActivity.class);
TaskStackBuilder ss = TaskStackBuilder.create(this);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(tt);
PendingIntent rr = stackBuilder.getPendingIntent(
0, PendingIntent.FLAG_UPDATE_CURRENT);
expandedView.setOnClickPendingIntent(R.id.notif_btn_settings, rr);
//notif_btn_settings - ид Кнопки, expandedView это мой RemoteViews
internal class MyContext : DbContext
{
public MyContext(DbContextOptions<MyContext> options)
: base(options)
{
}
public DbSet<Post> Posts { get; set; }
public DbSet<Tag> Tags { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Post>()
.HasMany(p => p.Tags)
.WithMany(p => p.Posts)
.UsingEntity<PostTag>(
j => j
.HasOne(pt => pt.Tag)
.WithMany(t => t.PostTags)
.HasForeignKey(pt => pt.TagId),
j => j
.HasOne(pt => pt.Post)
.WithMany(p => p.PostTags)
.HasForeignKey(pt => pt.PostId),
j =>
{
j.Property(pt => pt.PublicationDate).HasDefaultValueSql("CURRENT_TIMESTAMP");
j.HasKey(t => new { t.PostId, t.TagId });
});
}
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public ICollection<Tag> Tags { get; set; }
public List<PostTag> PostTags { get; set; }
}
public class Tag
{
public string TagId { get; set; }
public ICollection<Post> Posts { get; set; }
public List<PostTag> PostTags { get; set; }
}
public class PostTag
{
public DateTime PublicationDate { get; set; }
public int PostId { get; set; }
public Post Post { get; set; }
public string TagId { get; set; }
public Tag Tag { get; set; }
}
countOfIteration = Math.Min(width, height);
countOfIteration = width > height
? height
: width;