Próbuję utworzyć funkcję w wielu wierszach.
Parametry wyzwania:
- Funkcja zwraca „barbarzyńca”
- Tylko 2 znaki w wierszu
- Maksymalnie 40 linii. Wciąż próbuję użyć grubej strzały, by zadeklarować moją funkcję, ale grube strzały nie działają, jeśli nie masz ich połączonych.
Źródło wyzwania: https://www.codewars.com/kata/multi-line-task-plus-plus-hello-world
Moja obecna praca:
f=
(
)=>
'\
b\
a\
r\
b\
a\
r\
i\
a\
n\
s\
'
Działa, ale „) =>” ma 3 znaki. Naprawdę chcę po prostu wiedzieć, jak można nawet rozciągnąć tworzenie funkcji. Nigdzie nie mogę znaleźć żadnych informacji, ponieważ jest to oczywiście mało praktyczne.
code-challenge
restricted-source
tips
source-layout
javascript
theNewfelll
źródło
źródło
Odpowiedzi:
Oto rozwiązanie z 38 liniami:
Tworzy funkcję za pomocą
Function
konstruktora, do którego uzyskuje dostęp[].map.constructor
za pomocą notacji indeksu dolnego ([]['map']['constructor']
). Jest to metoda używana przez JSFuck do tworzenia funkcji.źródło
[]['map']['constructor']
zamiast[]['sum']['constructor']
?35 linii
Wypróbuj online!
Wykorzystuje fakt, że
0
jest liczbą, konstruktorem0
jestNumber
, a konstruktoremNumber
jestFunction
.32 linie
Wypróbuj online!
To zasadniczo działa
który wykorzystuje strukturę IIFE . Dodatkową zaletą jest to, że możemy przełamać linię niektórych części w ciele funkcji, aby zmniejszyć liczbę linii.
24 linie
Wypróbuj online!
Wersja Inline:
Ponieważ wszystko, czego chcemy, to zwrócić ciąg, możemy uciec od metody ciągu powiązanej z ciągiem. Korzystając z niego
trim
, możemy również bezpiecznie pozostawić początek nowej linii.źródło